Вывод команды BASH в переменную

Bash Command Output Variable



Различные типы команд bash необходимо запускать с терминала в зависимости от требований пользователя. Когда пользователь запускает любую команду с терминала, он показывает вывод, если ошибки не существует, в противном случае отображается сообщение об ошибке. Иногда выходные данные команды необходимо сохранить в переменной для использования в будущем. Для этой цели можно использовать функцию подстановки команд оболочки в bash. В этом руководстве показано, как с помощью этой функции можно сохранять в переменной различные типы команд оболочки.

Переменная= $(команда)
Переменная= $(команда [вариант…]аргумент1 аргумент2 ...)
Переменная= $(/дорожка/к/команда)

ИЛИ







Переменнаязнак равно``команда``
Переменнаязнак равно``команда [вариант…]аргумент1 аргумент2 ...``
Переменнаязнак равно`/дорожка/к/команда``

*** Примечание. Не используйте пробелы до и после знака равенства при использовании приведенных выше команд.



Вывод одной команды в переменную

Команды Bash могут использоваться без каких-либо параметров и аргументов для тех команд, где эти части являются необязательными. В следующих двух примерах показано использование простой подстановки команд.



Пример №1:

bash ` дата команда используется для отображения текущей даты и времени. Следующий скрипт сохранит вывод ` дата команду в $ текущая дата переменная с помощью подстановки команд.





$текущая дата= $(Дата)
$выбросил 'Сегодня$ current_date'

Выход:



Пример №2:

`pwd` команда показывает путь к текущему рабочему каталогу. Следующий скрипт сохраняет вывод `pwd` команду в переменную, $ current_dir и значение этой переменной печатается с использованием `эхо` команда.

$current_dirзнак равно``pwd``
$выбросил 'Текущий каталог:$ current_dir'

Выход:

Команда с опцией и аргументом

Параметр и аргумент являются обязательными для некоторых команд bash. В следующих примерах показано, как можно сохранить вывод команды с параметром и аргументом в переменной.

Пример № 3:

Баш ` Туалет Команда используется для подсчета общего количества строк, слов и символов любого файла. Эта команда использует -c, -w и -l в качестве параметра и имя файла в качестве аргумента для генерации вывода. Создайте текстовый файл с именем fruit.txt со следующими данными для проверки следующего скрипта.
fruit.txt

fruit.txt
манго
апельсин
Банан
Виноград
Гуава
яблоко

Выполните следующие команды, чтобы подсчитать и сохранить общее количество слов в fruit.txt файл в переменную, $ count_words и распечатайте значение, используя ` эхо команда.

$count_wordsзнак равно``Туалет fruit.txt``
$выбросил 'Общее количество слов в файле fruit.txt равно$ count_words'

Выход:

Пример №4:

`вырезать` это еще одна команда bash, которая использует параметр и аргумент для генерации вывода. Создайте текстовый файл с именем weekday.txt с названиями семи дней недели для запуска следующего скрипта.

weekday.txt

понедельник
вторник
среда
четверг
Пятница
Суббота
Воскресенье

Создайте файл bash с именем cmdsub1.sh со следующим сценарием. В этом сценарии в то время как цикл используется для чтения содержимого weekday.txt файл построчно и прочтите первые три символа каждой строки, используя ` вырезать команда. После вырезания строковое значение сохраняется в переменной $ день . Затем, если оператор используется для проверки значения $ день является ' Солнце' или не. На выходе будет напечатано ‘ Воскресенье праздник ‘Когда, если условие истинно, иначе будет напечатано значение $ день .

cmdsub1.sh

#! / bin / bash
имя файлазнак равно'weekday.txt'
в то время как читатьлиния;делать
деньзнак равно``выбросил $ линия | резать -c 1-3``
если [ $ день=='Солнце' ]
тогда
выбросил 'Воскресенье - праздник'
еще
выбросил $ день
быть
сделано<$ filename

Запускаем скрипт.

$Котweekday.txt
$трепатьcmdsub1.sh

Выход:

Использование подстановки команд в цикле

Вы можете сохранить вывод подстановки команды в любую переменную цикла, которая показана в следующем примере.

Пример 5:

Создайте файл с именем cmdsub2.sh со следующим кодом. Здесь ` ls -d * / Команда `используется для получения всего списка каталогов из текущего каталога. Здесь цикл For используется для чтения каждого каталога из вывода и сохранения его в переменной $ dirname который печатается позже.

cmdsub2.sh

#! / bin / bash
для dirname в$(ls -d * /)
делать
выбросил '$ dirname'
сделано

Запускаем скрипт.

$трепатьcmdsub2.sh

Выход:

Использование вложенных команд

Как вы можете использовать несколько команд с помощью вертикальной черты (|), показано в предыдущем примере. Но вы можете использовать вложенные команды при подстановке команд, где вывод первой команды зависит от вывода второй команды и работает противоположно команде pipe (|).

Синтаксис вложенной команды:

кудазнак равно``command1 ``команда``

Пример # 6:

Две команды, ` выбросил `и` кто `используются в этом примере как вложенная команда. Здесь ` кто Сначала будет выполнена команда `, которая распечатает информацию о текущем вошедшем в систему пользователе. Вывод команды ` кто `команда будет выполняться` выбросил `команда и вывод` выбросил `будет сохраняться в переменной $ var . Здесь вывод ` выбросил Команда `зависит от вывода` кто `команда.

$кудазнак равно``выбросил``кто``
$выбросил $ var

Выход:

Использование пути к команде

Если вы знаете путь к команде, вы можете запустить команду, указав путь к команде при использовании подстановки команд. В следующем примере показано использование пути к команде.

Пример # 7:

`whoami` Команда показывает имя пользователя, вошедшего в систему в данный момент. По умолчанию эта команда хранится в / usr / являюсь/ папка. Запустите следующий сценарий, чтобы запустить ` whoami` команда с использованием пути и сохранения в переменной, $ output, и распечатайте значение $ output .

$выход= $(/usr/являюсь/кто я)
$выбросил $ output

Выход:

Использование аргумента командной строки

Вы можете использовать аргумент командной строки с командой в качестве аргумента при подстановке команды.

Пример # 8:

Создайте файл bash с именем cmdsub3.sh со следующим сценарием. ` базовое имя `команда используется здесь для получения имени файла из 2ndаргумент командной строки и хранится в переменной, $ filename . Мы знаем 1улАргумент командной строки - это имя исполняемого скрипта, которое обозначается символом $ 0.

#! / bin / bash
имя файлазнак равно``базовое имя 1 доллар``
выбросил 'Имя файла$ filename. '

Запустите сценарий со следующим значением аргумента.

$трепатьcmdsub3.sh Рабочий стол/темп/hello.txt

Здесь, базовое имя пути, Рабочий стол / temp / hello.txt является ' hello.txt '. Итак, ценность $ filename будет hello.txt .

Выход:

Заключение:

В этом руководстве показаны различные варианты использования подстановок команд. Если вам нужно работать с несколькими командами или зависимыми командами и временно сохранить результат для выполнения некоторых других задач позже, вы можете использовать эту функцию в своем скрипте, чтобы получить результат.

Больше информации в видео: