Различные типы команд bash необходимо запускать из терминала в зависимости от требований пользователя. Когда пользователь запускает любую команду с терминала, он показывает вывод, если ошибки не существует, в противном случае отображается сообщение об ошибке. Иногда выходные данные команды необходимо сохранить в переменной для использования в будущем. Для этой цели можно использовать функцию подстановки команд оболочки в bash. В этом руководстве показано, как с помощью этой функции можно сохранять различные типы команд оболочки в переменной.
variable = $ ( команда [параметр…] аргумент1 аргумент2…)
переменная = $ (/путь/к/команде)
ИЛИ
variable =` command [option…] argument1 arguments2… `
variable =`/path/to/command`
*** Примечание. Не используйте пробелы до и после знака равенства при использовании приведенных выше команд.
Вывод одной команды в переменную
Команды Bash могут использоваться без каких-либо параметров и аргументов для тех команд, где эти части являются необязательными. В следующих двух примерах показано использование простой подстановки команд.
Пример № 1:
bash ` Команда date` используется для отображения текущей даты и времени. Следующий скрипт сохранит вывод команды ` date` в переменную $ current_date с помощью подстановки команд.
$ echo «Сегодня $ current_date»
Вывод:
Пример № 2:
`pwd` команда показывает путь к текущему рабочему каталогу. Следующий скрипт сохраняет вывод команды `pwd` в переменную $ current_dir , а значение этой переменной печатается с использованием Команда `echo` .
$ echo «Текущий каталог: $ current_dir»
Вывод:
Команда с параметром и аргументом
Параметр и аргумент являются обязательными для некоторых команд bash. В следующих примерах показано, как сохранить вывод команды с параметром и аргументом в переменной.
Пример № 3:
Команда Bash ` wc` используется для подсчета общего количества строк, слов и символов в любом файле. Эта команда использует -c, -w и -l в качестве параметра и имя файла в качестве аргумента для генерации вывода. Создайте текстовый файл с именем fruit.txt со следующими данными для проверки следующего скрипта.
fruit.txt
Манго
Апельсин
Банан
Виноград
Гуава
Яблоко
Выполните следующие команды для подсчета и сохранения общего количества слов в файле fruit.txt в переменной $ count_words и распечатайте значение, используя ` Команда echo` .
$ echo» Всего слов во фруктах .txt — это $ count_words «
Вывод:
Пример №4:
` cut` — еще одна команда bash, которая использует параметр и аргумент для генерации вывода. Создайте текстовый файл с именем weekday.txt с названиями семи дней недели для запуска следующего скрипта.
weekday.txt
вторник
среда
четверг
пятница
суббота
воскресенье
Создайте файл bash с именем cmdsub1.sh с помощью следующего скрипта. В этом скрипте цикл while используется для построчного чтения содержимого файла weekday.txt и чтения первых трех символов каждой строки с помощью ` Команда cut` . После вырезания строковое значение сохраняется в переменной $ day . Затем, если оператор используется для проверки значения $ day , является « Sun» или нет. На выходе будет напечатано « Воскресенье — выходной », если условие истинно, в противном случае будет напечатано значение $ day .
cmdsub1.sh
filename = ‘weekday.txt’
пока читаем строку; do
day = `echo $ line | cut -c 1-3`
if [$ day == «Sun»]
then
echo «Воскресенье — выходной»
else
echo $ day
fi
done
Запустить сценарий.
$ bash cmdsub1.sh
Вывод:
Использование подстановки команд в цикле
Вы можете сохранить результат подстановки команды в любой переменной цикла, показанной в следующем примере.
Пример № 5:
Создайте файл с именем cmdsub2.sh со следующим кодом. Здесь команда ` ls -d */` используется для получения всего списка каталогов из текущего каталога. Здесь цикл For используется для чтения каждого каталога из вывода и сохранения его в переменной $ dirname , которая печатается позже.
cmdsub2. sh
для имени каталога в $ (ls -d */)
do
echo «$ dirname»
готово
Запустить сценарий.
Вывод:
Использование вложенных команд
Как вы можете использовать несколько команд с помощью вертикальной черты (|), показано в предыдущем примере. . Но вы можете использовать вложенные команды при подстановке команд, где вывод первой команды зависит от вывода второй команды и работает противоположно команде pipe (|).
Синтаксис вложенных команд:
Пример № 6:
Две команды, ` echo ` и ` who ` используются в этом пример в качестве вложенной команды. Здесь сначала будет выполнена команда ` who `, которая распечатает информацию о текущем вошедшем в систему пользователе. Вывод команды ` who `команда будет выполняться командой` echo `, а вывод` echo `будет сохранен в переменной $ var . Здесь вывод команды ` echo ` зависит от вывода команды Команда ` who `.
$ echo $ var
Вывод:
Использование пути к команде
Если вы знаете путь к команде, вы можете запустить команду, указав команду путь при использовании подстановки команд. В следующем примере показано использование пути к команде.
Пример № 7:
`whoami` показывает имя пользователя, вошедшего в систему в данный момент. По умолчанию эта команда хранится в папке / usr/ bin/. Запустите следующий сценарий, чтобы запустить команду ` whoami` , используя путь и сохранить в переменной, $ output, и распечатать значение $ вывод .
$ echo $ output
Вывод:
Использование аргумента командной строки
Вы можете использовать аргумент командной строки с командой в качестве аргумента при подстановке команды.
Пример № 8:
Создайте файл bash с именем cmdsub3.sh с помощью следующего скрипта. Команда ` basename ` используется здесь для извлечения имени файла из 2 аргумента командной строки nd и сохраняется в переменной $ filename . Мы знаем, что аргумент командной строки 1 st — это имя исполняемого скрипта, которое обозначается символом $ 0.
filename = `basename $ 1`
echo» Имя файла — $ filename. «
Запустите сценарий со следующим значением аргумента.
Здесь базовое имя пути, Desktop/temp/hello.txt — это ‘ hello.txt ‘. Итак, значение $ filename будет hello.txt .
Вывод:
Заключение:
В этом руководстве показаны различные варианты использования подстановок команд. Если вам нужно работать с несколькими командами или зависимыми командами и временно сохранить результат для выполнения некоторых других задач позже, вы можете использовать эту функцию в своем скрипте, чтобы получить результат.
Подробнее в видео :