Библиотека сайта rus-linux.net
Как сохранить вывод команды Linux в переменной
Оригинал: How To Assign Output of a Linux Command to a Variable
Автор: Aaron Kili
Дата публикации: 19 января 2017 года
Перевод: А. Кривошей
Дата перевода: январь 2018 г.
Обычно при работе команды Linux выводят на консоль определенную информацию: результат работы программы, либо сообщение о статусе/ошибке выполнения программы. При необходимости вы можете сохранить вывод команды в переменной, которая будет использоваться в последующих операциях.
В этой статье мы рассмотрим различные способы сохранения вывода команды оболочки в переменной, особенно это полезно при создании скриптов оболочки.
Для сохранения вывода команды в переменной вы можете использовать возможность замены команды оболочки в следующих формах:
variable_name=$(command) variable_name=$(command [option ...] arg1 arg2 ...)
или
variable_name='command' variable_name='command [option ...] arg1 arg2 ...'
Ниже приведены несколько примеров использования подстановки команд.
В этом первом примере мы будем хранить значение команды who (которая показывает, кто авторизован в системе) в переменной CURRENT_USERS:
$ CURRENT_USERS = $(who)
Затем мы можем использовать переменную в предложении, выводимом с помощью команды echo:
$ echo -e "The following users are logged on the system:\n\n $CURRENT_USERS"
В приведенной выше команде флаг -e означает интерпретацию любых управляющих последовательностей (например, \n для новой строки). Чтобы избежать потери времени и памяти, просто выполните подстановку в команде echo следующим образом:
$ echo -e "The following users are logged on the system:\n\n $(who)"
Затем, чтобы продемонстрировать концепцию использования второй формы, мы можем сохранить общее количество файлов в текущем рабочем каталоге в переменной под названием FILES и использовать ее позже следующим образом:
$ FILES=`sudo find . -type f -print | wc -l` $ echo "There are $FILES in the current working directory."
О перенаправлении вывода команд Linux вы можете подробнее узнать в следующих статьях на нашем сайте:
- Перенаправление ввода/вывода, каналы и фильтры
- Перенаправление стандартных потоков данных в Linux
- Искусство программирования на языке сценариев командной оболочки. Глава 16. Перенаправление ввода/вывода
- Руководство по Bash для начинающих. Перенаправление ввода/вывода и циклы
- Разработка сценариев командной оболочки для начинающих. Часть 1: Введение