Книга: Искусство программирования на языке сценариев командной оболочки
Пример 16-4. Перенаправление в цикл while
Пример 16-4. Перенаправление в цикл while
#!/bin/bash
if [ -z "$1" ]
then
Filename=names.data # По-умолчанию, если имя файла не задано.
else
Filename=$1
fi
# Конструкцию проверки выше, можно заменить следующей строкой (подстановка параметров):
#+ Filename=${1:-names.data}
count=0
echo
while [ "$name" != Smith ] # Почему переменная $name взята в кавычки?
do
read name # Чтение из $Filename, не со stdin.
echo $name
let "count += 1"
done <"$Filename" # Перенаправление на ввод из файла $Filename.
# ^^^^^^^^^^^^
echo; echo "Имен прочитано: $count"; echo
# Обратите внимание: в некоторых старых командных интерпретаторах,
#+ перенаправление в циклы приводит к запуску цикла в субоболочке (subshell).
# Таким образом, переменная $count, по окончании цикла, будет содержать 0,
# значение, записанное в нее до входа в цикл.
# Bash и ksh стремятся избежать запуска субоболочки (subshell), если это возможно,
#+ так что этот сценарий, в этих оболочках, работает корректно.
#
# Спасибо Heiner Steven за это примечание.
exit 0
- Пример 16-4. Перенаправление в цикл while
- Пример 16-5. Альтернативная форма перенаправления в цикле while
- Пример 16-6. Перенаправление в цикл until
- Пример 16-7. Перенаправление в цикл for
- Пример 16-8. Перенаправление устройств (stdin и stdout) в цикле for
- Пример 16-9. Перенаправление в конструкции if/then
- Пример 16-10. Файл с именами "names.data", для примеров выше
- 16.2. Перенаправление для блоков кода
- Пример 16-8. Перенаправление устройств (stdin и stdout) в цикле for
- Пример 16-9. Перенаправление в конструкции if
- Пример 16-5. Альтернативная форма перенаправления в цикле while
- Пример 16-6. Перенаправление в цикл until
- Пример 16-7. Перенаправление в цикл for
- Пример 16-10. Файл с именами "names.data", для примеров выше
- Пример установочного скрипта
- Пример из практики
- ПРИМЕР ПРОСТОЙ ПРОГРАММЫ НА ЯЗЫКЕ СИ
- Жизненные циклы продуктов
- Примеры получения статистики