os_bash
.pdfecho "$year is a leap"
else
echo "%year is not a leap"
fi
3.4.2Оператор выбора
case hвыражениеi in [ hшаблонi) hкомандыi ... ] esac
ПРИМЕР
case $1 in
1)
echo "One"
;;
1?|3?)
echo " starts with 1 or 3"
;;
*6)
echo "Ends with 6"
;;
*[3-7])
echo "Ends with 3 to 7"
;;
*)
echo "Other"
;;
31
esac
3.4.3Оператор цикла по списку
for hимяi [ in hсписокi ]; do hкомандыi ... done
Если «in hсписокi » пропущено то подразумевается «in $@».
ПРИМЕР
for GUEST in "Mr. Brown" "Mr. Smith" "Mr. Jones"; do echo "Hello $GUEST"
done
ПРИМЕР
for NAME in *.sh; do
echo "$NAME"
done
3.4.4Оператор цикла с предусловием продолжения
while hкоманды проверкиi [ in hсписокi ]; do hкомандыi ... done
ПРИМЕР
NUM=y
32
while [ "$NUM" != n ]; do
echo -n "Continue? (y/n) "
read NUM
echo "Processing . . . "
done
ПРИМЕР
BACKUPDIR=$HOME/backup
WORKDIR=$HOME/work
DATE=‘date +%Y_%m_%d.tar‘
ARCHIVE=$BACKUPDIR/$DATE
mkdir -p $BACKUPDIR
find "$WORKDIR" -type f -mtime -5 2> /dev/null | \ while read -e FILE; do
echo " Adding $FILE"
tar -uf "$ARCHIVE" "$FILE"
done
Или:
for FILE in $(find "$WORKDIR" -type f -mtime -5 2> /dev/null); do
echo " Adding $FILE"
tar -uf "$ARCHIVE" "$FILE"
done
33
3.4.5Оператор цикла с предусловием прекращения
until hкоманды проверкиi [ in hсписокi ]; do hкомандыi ... done
3.4.6Операторы (встроенные команды) выхода из цикла и итерации
break
continue
34