В этой статье разберемся с одним из циклов bash, а именно с циклом «while read line». С его помощью будем обрабатывать строки.

Допустим в скрипте есть переменная, значение которой состоит из нескольких строк:

#!/bin/bash
a="шишка\nяблоко\nлисток\nгруша"
echo -e $a

Напомню, что \n это символ новой строки.

Выполним этот скрипт и получим такой результат:

$ ./test.sh
шишка
яблоко
листок
груша

Теперь изменим этот скрипт, чтобы каждая строка обрабатывалась в цикле:

#!/bin/bash
a="шишка\nяблоко\nлисток\nгруша"
echo -e "$a" | while read line
   do
      echo "На дереве висит $line"
   done

Выполнив этот скрипт получим:

$ ./test.sh
На дереве висит шишка
На дереве висит яблоко
На дереве висит листок
На дереве висит груша

Подобный скрипт можно написать и таким способом:

#!/bin/bash
echo -e "шишка\nяблоко\nлисток\nгруша" | while read line
   do
      echo "На дереве висит $line"
   done

Таким образом мы можем делать примерно такое:

"команда, возвращающая строки" | while read line
   do
      команда которой передаем на обработку каждую строку $line
   done

Вот еще один пример bash скрипта:

#!/bin/bash
cat /etc/passwd | cut -f 1 -d ":"  | while read line
   do
      echo "В системе есть пользователь - $line"
   done

Запустим это скрипт:

$ ./test.sh
В системе есть пользователь - root
В системе есть пользователь - daemon
В системе есть пользователь - bin
**** И так далее ***

Также для подобной задачи подходит другой цикл «for line in `comand`», о нём я писал в этой статье.

Сводка
Bash - Обработка строк циклом "while read line"
Имя статьи
Bash - Обработка строк циклом "while read line"
Описание
В этой статье разберемся с одним из циклов bash, а именно с циклом «while read line». С его помощью будем обрабатывать строки

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *