Подстановки
Подстановки
$(команда)
выполняет команду и подставляет её вывод как строку.
Удобно использовать для передачи вывода как аргумент другой команды.
$((арифметическое выражение))
вычисляет арифметическое выражение.
Подсказка 💡
В арифметических выражениях 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