Скрипт должен храниться в файле с расширением .sh
Скрипт начинается со строки вида:
#!/bin/bash (в первой строке файла с расширением .sh знак # интерпретатор не распознает как комментарий)
echo "This site computerhelp" -команда выводит в консоль текст
This site computerhelp
Можно использовать любые стандартные команды Linux, например ls (вывод содержимого директории)
echo "This site computerhelp"
ls
Сохраним этот скрипт в файле myscript.sh и запустим его из командной строки. Для запуска скрипта мы должны дать файлу права на исполнение всем (а) (x-execute) командой chmod:
chmod a+x myscript.sh
После этого можем запускать наш скрипт командой:
./myscript.sh
Можно также запустить скрипт без добавления прав на исполнение файла командой:
bash myscript.sh
Создание переменных
mysite=''computerhelp"
mysite2="computerhelp.ucoz.ua"
Присваивание переменной значения выполнения команды Linux
myOS=`umane -a` `- символ под кнопкой "Ecs"
Передача переменных посредством запуска скрипта в командной строке:
./myscript.sh 111 222 computer
где myscript.sh это переменная $0 (переменная $0 всегда равна названию файла),
соответственно переменная $1 равна "111", $2 равна "222", $3 равна "computer" и так далее.
И результатом выполнения скрипта myscript.sh John с содержимым echo "Hello $1" будет
Hello John
Переменной host присвоим имя локального компьютера и сделаем пинг на него, наш скрипт будет выглядеть следующим образом:
host=`hostname` переменной host присваиваем имя локального компьютера (хоста) командой линукса hostname
ping -c 4 $host пингуем 4 раза наш хост
Наш итоговый скрипт:
#!/bin/bash
host=`hostname`
ping -c 4 $host
пропингует сам себя (127.0.0.1) четыре раза.
Ввод данных пользователя
Скрипт со следующим кодом запросит ввод данных от пользователя, сохранит их в переменную t1 а затем отобразит их после текста "You enter:"
#!/bin/bash
read -p "Enter text please: " t1
echo "You enter: $t1"
Использование условий и циклов в скриптах
Использование условий.
Наш скрипт с названием myscript.sh, содержащий следующий код
#!/bin/bash
if [ "$1" == "Petya" ]; then
echo "Hello $1 !"
fi
(пробелы в условиях очень важны!)
При запуске скрипта с параметром Petya, то есть myscript.sh Petya скрипт проверит условие действительно ли есть параметр Petya и как итог выдаст нам сообщение:
Hello Petya !
Конечно можно делать более сложные условия, например:
#!/bin/bash
if [ "$1" == "Petya" ]; then
echo "Hello $1 !"
elif [ "$1" == "computerhelp" ]; then
echo "Greating $1"
else echo "Privet $1"
fi
То есть если параметром скрипта передать "computerhelp", скрипт выдаст сообщение Greating computerhelp, соответственно во всех других условиях скрипт выдаст результат Privet и подставит текст из переданого скрипту параметра.
Оператор выбора CASE. Итак дополним наш скрипт следующим кодом:
case $2 in
1) echo "Case1 is present";;
[2-9]) echo "2 per 9 is present";;
"comp") echo "Word "comp" is present";;
*) echo "Any symbol is present"
esac
В итоге получим такой скрипт:
#!/bin/bash
if [ "$1" == "Petya" ]; then
echo "Hello $1 !"
elif [ "$1" == "computerhelp" ]; then
echo "Greating $1"
else echo "Privet $1"
fi
case $2 in
1) echo "Case1 is present";;
[2-9]) echo "2 per 9 is present";;
"comp") echo "Word "comp" is present";;
*) echo "Any symbol is present"
esac
При выполнении этого скрипта с параметрами Petya 2, где $0 у нас всегда яляется именем файла и равно myscript.sh, $1 равно Petya и $2 равно 2. Результатом команды
./myscript.sh Petya 2
будет
Hello Petya !
2 per 9 is present
* - здесь любой символ исключая символы из условия выше
Использование цикла WHILE
Создадим новый скрипт myscript2.sh
#!/bin/bash
counter=0
while [ $counter -lt 10]; do
echo "Counter is: $counter"
counter=$(($counter+1))
done
где -lt означает less then (меньше чем)
Результатом вывода этого скрипта будет:
Counter is: 0
Counter is: 1
Counter is: 2
Counter is: 3
Counter is: 4
Counter is: 5
Counter is: 6
Counter is: 7
Counter is: 8
Counter is: 9
Циклы FOR
for myfile in `ls *.txt`; do
cat $myfile
done
Этот скрипт выполняет команду cat для всех файлов с расширением txt, то есть отфильтровывает txt файлы командой ls *.txt и выводит содержимое файлов на экран командой cat.
for x in {1..10}; do
echo "X = $x"
done
Цикл выше выводит последовательность цифр от 1 до 10:
X = 1
X = 2
X = 3
X = 4
X = 5
X = 6
X = 7
X = 8
X = 9
X = 10
Добавление инфы в файл:
cat <<EOF > index.html
<html>
<body>
<H2>Hello User !!!</H2>
</body>
</html>
EOF
Поиск инфы в файле и вывод результата поиска (можно сделать в виде скрипта script.sh):
result=`grep "Hello" index.html | wc -l`
echo $result
if [ "$result" = "1" ]
then
echo "Test passed"
else
echo "Test failed"
fi
|