Вы здесь

Синтаксис bash

Краткий свод управляющих конструкций языка программирования bash.

Во всех управляющих конструкциях в качестве логического значения используется код возврата из программы, указанной в качестве условия. Код возврата 0 – истина, любое другое значение – ложь. Программа true – всегда завершается с кодом 0, false – всегда завершается с кодом 1. Команда test (она же [...] ) вычисляет код ответа на основе выражения, переданного через параметры командной строки.

Конструкции могут быть записаны в несколько строк, или в одну с использованием разделителя ";".

Последовательности команд. Возвращают код ответа последней выполненной команды.
; - оператор безусловного последовательного выполнения команд
&& оператор И. Правая часть не выполняется если левая выполнилась неуспешно.
|| оператор ИЛИ. Правая часть не выполняется если левая выполнилась успешно.

Оператор if – условное выполнение.
if cmd
then
command...
else
command...
fi

Запись в одну строку
if cmd ; then command1;command2…;else command3;command4…;fi

Цикл while выполняется, пока команда условие возвращает 0
while cmd
do
command...
done
Запись в одну строку
while cmd; do command1; command2;done

Пример с использованием встроенной функцией test
VAR0=0; LIMIT=10
while [ "${VAR0}" -lt "${LIMIT}" ];do
echo -n "${VAR0} " # -n подавляет перевод строки
VAR0=`expr ${VAR0} + 1`
done

Пример в сочетании c арифметической подстановкой
a=1
while (( a <= LIMIT )) ; do # В (()) $ не нужен
echo -n "$a "
((a += 1)) # В арифметической подстановке есть оператор +=
done

Пример с командой read, которая read читает строки из стандартного ввода. read разбивает строку на слова и сохраняет их в указанных переменных. Если переменные не заданы, то read сохраняет всю строку в переменной REPLY. Если необходимо читать посимвольно, то команде read можно указать опцию -n 1
while read; do
echo $REPLY
done < file.txt

Цикл until аналогичен while, но имеет обратное условие
until [condition-is-true]; do
command...
done

Цикл for выполняется путем последовательной подстановки в переменную цикла значений из списка
for ARG in LIST; do
command...
done

Простая форма
for ARG in "$VAR1" "$VAR2" "$VAR3" ; do
echo $ARG
done

В сочетании с подстановкой имен файлов по шаблону
for FILE in [ab]*; do
echo "$FILE" # В отличие от echo [ab]*, имена печатаются в отдельных строках
done

В сочетании с арифметической подстановкой
LIMIT=5
for ((a=1; a <= LIMIT ; a++)); do # $ не нужен ни перед скобками ни перед именами переменных
echo -n "$a "
done

В сочетании с программой seq
LIMIT=5
for ARG in `seq 1 $LIMIT`;do
echo -n "$ARG "
done

Оператор case выбор одного из вариантов в соответствии со значением аргумента
case "$VARiable" in
"$condition1" )
command...
;;
"$condition2" )
command...
;;
esac

Яндекс.Метрика