📜 Использование подстановки команд в оболочке Bash

Подстановка команд на Linux

by itisgood

Подстановка команд в bash – это не что иное, как передача вывода одной команды другой для использования в различных случаях.

Звучит сложно?

Позвольте мне привести небольшой пример:

# Получение текущей даты с помощью команды date
current_date=$(date)

# Вывести текущую дату
echo "Сегодняшняя дата: $current_date"

Приведенный выше скрипта bash просто использует команду date и передает вывод в переменную current_date.

В дальнейшем переменная current_date была использована в операторе echo для вывода текущей даты.

Если вы внимательно посмотрите, я использовал $(…) вокруг команды date, которая перехватывала вывод команды date и передавала его в переменную current_date.

Да, это один из способов подстановки команд в bash, но есть и другие.

Давайте посмотрим.

Как заменять команды в bash

В bash существует два способа замены команд:

  • С помощью долларовых скобок $()
  • Использование обратных скобок (“)

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

Начнем с первого.

Подстановка команд с помощью долларовых скобок $()

Чтобы использовать долларовые скобки для подстановки команд, достаточно следовать приведенному синтаксису команды:

Variable=$(command)

Можно также добавить дополнительный текст для поддержки вывода команды, как показано здесь:

Variable="Optional text $(command)"

Позвольте мне привести простой пример.

Здесь я использовал команду whoami для поиска текущего вошедшего в систему пользователя с помощью команды echo:

echo "The current user is: $(whoami)"

Можно также присвоить переменной целое значение и затем использовать его

#!/bin/bash

current_user=$(whoami)

echo "The current user is: $current_user"

Если интересно, то вот ожидаемый результат после выполнения приведенного выше cкрипта:

The current user is: $root

Хотя вывод похож на предыдущий пример, в этом скрипте я подставил значение команды whoami и передал его в переменную current_user.

Позже я использовал ее в операторе echo.

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

Например, здесь я использовал ее два раза для оператора echo:

echo "Hello, $(whoami)! You are running this script on $(date)."

Замена команд с помощью обратных знаков (“ )

Метод обратных знаков считается устаревшим и в настоящее время не рекомендуется. Однако в старых книгах на него еще можно найти ссылки.

Это еще один способ подстановки команд в bash.

Чтобы использовать обратные знаки для подстановки команд, просто следуйте приведенному синтаксису команды:

variable=`command`

Если вы хотите использовать его с дополнительным текстом, то это также можно сделать, используя следующее:

variable="Additional text `date`"

Для демонстрации этого я использовал простой bash-скрипт:

#!/bin/bash

result=`echo "5 + 7" | bc`
echo "The result of the calculation is: $result"

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

В дальнейшем результат был выведен с помощью оператора echo.

Вот что можно ожидать при выполнении приведенного выше сценария:

The result of the calculation is: 12

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

Чтобы использовать обратные знаки для нескольких подстановок, используйте следующий синтаксис:

result=`command1 \`command2\` command3\`

Да, каждую команду необходимо разделять обратным слешем (\).

Если вы хотите добавить дополнительный текст, то это будет выглядеть следующим образом:

result= `command1 \ "Additional text `command2\` Some more text here `command3\`"`

Проще говоря, вы можете добавить текст в любом месте синтаксиса между “”.

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

result=`echo "Today is \`date\`, and the result of the calculation is \`echo 5 + 7 | bc\`."`
echo "$result"

см. также:

You may also like

Leave a Comment