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

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

variable = $ (command)
variable = $ ( команда [параметр…] аргумент1 аргумент2…)
переменная = $ (/путь/к/команде)

ИЛИ

variable = `command`
variable =` command [option…] argument1 arguments2… `
variable =`/path/to/command`

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

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

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

Пример № 1:

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

$ current_date = $ (date)
$ echo «Сегодня $ current_date»

Вывод:

Пример № 2:

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

$ current_dir =` pwd`
$ echo «Текущий каталог: $ current_dir»

Вывод:

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

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

Пример № 3:

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

фрукты. txt
Манго
Апельсин
Банан
Виноград
Гуава
Яблоко

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

$ count_words = `wc -w fruit.txt`
$ echo» Всего слов во фруктах .txt — это $ count_words «

Вывод:

Пример №4:

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

weekday.txt

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

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

cmdsub1.sh

#!/bin/bash
filename = ‘weekday.txt’
пока читаем строку; do
day = `echo $ line | cut -c 1-3`
if [$ day == «Sun»]
then
echo «Воскресенье — выходной»
else
echo $ day
fi
done

Запустить сценарий.

$ cat weekday.txt
$ bash cmdsub1.sh

Вывод:

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

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

Пример № 5:

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

cmdsub2. sh

#!/bin/bash
для имени каталога в $ (ls -d */)
do
echo «$ dirname»
готово

Запустить сценарий.

$ bash cmdsub2.sh

Вывод:

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

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

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

var = `command1 ` command «

Пример № 6:

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

$ var = `echo ` who «
$ echo $ var

Вывод:

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

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

Пример № 7:

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

$ output = $ (/usr/bin/whoami)
$ echo $ output

Вывод:

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

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

Пример № 8:

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

#!/Bin/bash
filename = `basename $ 1`
echo» Имя файла — $ filename. «

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

$ bash cmdsub3.sh Desktop/temp/hello.txt

Здесь базовое имя пути, Desktop/temp/hello.txt — это ‘ hello.txt ‘. Итак, значение $ filename будет hello.txt .

Вывод:

Заключение:

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

Подробнее в видео :

Оцените статью
nanomode.ru
Добавить комментарий