Оператор if используется в конструкциях вида:
if test-commands; then
consequent-commands;
[elif more-test-commands; then
more-consequents;]
[else alternate-consequents;]
fi
Вместо if можно также использовать символы группирования команд " &&" и " ||":
[ -e config.txt ] && echo configuring... || echo no config
Оператор for используется в конструкциях вида:
for name [in words ...]; do commands; done
Пример. Склеить текстовые файлы в один, указав для каждого файла его название:
echo "{directory $PWD}" > texts.lst
for fn in *.txt
do
echo "{file $fn}" >> texts.lst
cat $fn >> texts.lst
done
Если "in ..." не указано, проходит по всем параметрам (т. е. in "$@")
Пример.
for fn # список не указан, подразумевается "$@"
do
echo Processing file $fn...
# разные действия...
done
Оператор selectделает меню для выбора:
select a in strings;
do if [ -n "$a" ] # строка непуста только при допустимом выборе
then echo $a eto klass
break
else
echo $REPLY eto ne otvet # введеное сохраняется в $REPLY
fi;
done
Оператор readбез аргументов тоже запоминает строку в REPLY.
Оператор caseиспользуется в конструкции вида:
case слово in
[значение [| значение]...) команды;;]...
esac ,
значение может содержать ? и *
Пример.
for name in a.gz b.tar c.zip d.txt /kernel
do
echo -n "$name: "
case $name in
/kernel) echo "Ядро";;
*.txt) echo "Текстовый файл";;
*.gz|*.tar|*.zip) echo "Архив";;
*.c) echo "Программа на Си";;
*.cc|*.C|*.cpp|*.cx) echo "Программа на C++";;
*) echo "А это еще что?";;
esac
done
Операторы цикла until, whileпозволяют создавать конструкции вида:
until test-commands; do consequent-commands; done ,
while test-commands; do consequent-commands; done .