<Предыдущая | Содержание: | Следующая>
Чтение файлов с помощью циклов
while и until могут обрабатывать стандартный ввод. Это позволяет обрабатывать файлы с циклами «пока» и «до». В следующем примере мы отобразим содержимое файла distros.txt, использованного в предыдущих главах:
#! / Bin / Баш
# while-read: читать строки из файла при чтении версии дистрибутива; делать
printf "Distro:% s \ tVersion:% s \ tReleased:% s \ n" \
$ distro \
$ версия \
$ релиз выполнен <distros.txt
#! / Bin / Баш
# while-read: читать строки из файла при чтении версии дистрибутива; делать
printf "Distro:% s \ tVersion:% s \ tReleased:% s \ n" \
$ distro \
$ версия \
$ релиз выполнен <distros.txt
Чтобы перенаправить файл в цикл, мы помещаем оператор перенаправления после сделанный утверждение. Цикл будет использовать читать для ввода полей из перенаправленного файла. В читать Команда будет завершена после чтения каждой строки с нулевым статусом выхода до тех пор, пока не будет достигнут конец файла. В этот момент он выйдет с ненулевым статусом выхода, тем самым завершив цикл. Также можно передать стандартный ввод в цикл:
#! / Bin / Баш
# while-read2: читать строки из файла
sort -k 1,1 -k 2n distros.txt | пока читал релиз версии дистрибутива; do printf "Distro:% s \ tVersion:% s \ tReleased:% s \ n" \
$ distro \
$ версия \
выпуск $
сделанный
#! / Bin / Баш
# while-read2: читать строки из файла
sort -k 1,1 -k 2n distros.txt | пока читал релиз версии дистрибутива; do printf "Distro:% s \ tVersion:% s \ tReleased:% s \ n" \
$ distro \
$ версия \
выпуск $
сделанный
Здесь мы берем вывод sort команду и отобразить поток текста. Однако важно помнить, что, поскольку конвейер будет выполнять цикл в подоболочке, любые переменные, созданные или назначенные внутри цикла, будут потеряны при завершении цикла.