Пример 10-13. Работа с командой efax в пакетном режиме

Пример 10-13. Работа с командой efax в пакетном режиме

#!/bin/bash

EXPECTED_ARGS=2

E_BADARGS=65

if [ $# -ne $EXPECTED_ARGS ]

# Проверка наличия аргументов командной строки.

then

echo "Порядок использования: `basename $0` phone# text-file"

exit $E_BADARGS

fi

if [ ! -f "$2" ]

then

echo "Файл $2 не является текстовым файлом"

exit $E_BADARGS

fi

fax make $2 # Создать fax-файлы из текстовых файлов.

for file in $(ls $2.0*) # Все файлы, получившиеся в результате преобразования.

# Используется шаблонный символ в списке.

do

fil="$fil $file"

done

efax -d /dev/ttyS3 -o1 -t "T$1" $fil # отправить.

# Как указывает S.C., в цикл for может быть вставлена сама команда отправки в виде:

# efax -d /dev/ttyS3 -o1 -t "T$1" $2.0*

# но это не так поучительно [;-)].

exit 0

while

Оператор while проверяет условие перед началом каждой итерации и если условие истинно (если код возврата равен 0), то управление передается в тело цикла. В отличие от циклов for, циклы while используются в тех случаях, когда количество итераций заранее не известно.

while [condition] do command... done

Как и в случае с циклами for/in, при размещении ключевого слова do в одной строке с объявлением цикла, необходимо вставлять символ ";" перед do.

while [condition] ; do

Обратите внимание: в отдельных случаях, таких как использование конструкции getopts совместно с оператором while, синтаксис несколько отличается от приводимого здесь.