Подстановки


Подстановки

$(команда) выполняет команду и подставляет её вывод как строку.

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


$((арифметическое выражение)) вычисляет арифметическое выражение.

Подсказка 💡
В арифметических выражениях bash переменные можно использовать без предшествующего символа $.
Это упрощает запись и делает код более читаемым.

Что будет, если передать переменную, в которой лежит не число?


Пример

Подстановка ls

echo $(ls)
## вывод
2022-2023 Downloads re3 run_presentation_console

Арифметика

echo $((1 + 2))
## вывод
3

используем случайность с помощью переменной окружения RANDOM:

echo $((RANDOM % 10))
## вывод (?)
0

Кавычки и $

Кавычки влияют и здесь, как и при подстановке значений переменных.

"" не влияют на подстановку $:

echo "$(ls)"
## вывод
2021-2022
Downloads
re3
run_presentation_console

'' экранируют $ и никакой подстановки не происходит:

echo ' $(ls)'
## вывод
 $(ls)

Тильда

Знак ~ раскрывается shell в домашнюю директорию пользователя, от чьего имени исполняется команда.

Например, если мы запустим от рута такою команду:

echo ~

то получим такой вывод:

## вывод
/root