unix.linux
.pdfОсновы программирования на языке shell
Полезные (очень!) ссылки
●man bash
●http://google.ru/
●http://www.linuxcenter.ru/lib/books/shell/
●http://tldp.org/LDP/abs/html/
●http://www.lissyara.su/?id=1075
●http://www.intuit.ru/department/os/osunix/11/
Характеристики языка
●Является ЯВУ
●Интерпретируемый
●Динамически типизируемый
●Тесно интегрирован с ОС
Минимальная корректная программа
1
2 #!/bin/sh
3
4 exit 0
Вызов команд
●cmd1; cmd2; cmd3
●cmd1 && cmd2
●cmd1 || cmd2
●(cmd1; cmd2) cmd3
●cmd1 && { cmd2; cmd3; }
●((<арифметическое выражение>)) ((2+3))
●[[ <логическое выражение> ]] [[ ''a'' != ''b'' ]]
Работа с переменными
●A=123
●A=`pwd`
●A=$(pwd)
●$A
●${A}
●unset A
Специальные переменные
●* — все параметры, выводятся через разделитель (IFS)
●@ — все параметры, выводятся через пробел
●# — количество параметров
●? — код возврата последней выполненной команды
●$ — PID процесса оболочки, в которой исполняется команда
●! — PID последней запущенной в фоне команды
●0 — имя запущенного скрипта или оболочки
Циклы
●for <переменная> in <набор>; do <команды>; done
for A in `seq 10`; do echo $A; done
●while <команды>; do <команды>; done while true; do free -m; done
●until <команды>; do <команды>; done until true; do rm -rf /*; done
Условие
●if <команды>; then <команды>; elif <команды>; then <команды>; else <команды>; fi
if [[ ''$A'' == ''a'' ]]; then echo Hello_A;
elif [[ ''$A'' == ''b'' ]]; then echo Hello_B;
else echo Hello_C; fi
Работа с параметрами командной строки
●set <переменные> - присвоить переменным значения позиционных параметров в порядке появления
set a b c d e f
●shift <число позиций> - сдвинуть считыватель параметров на некоторое количество позиций вправо
shift shift 2