Bash:
Склеивание строк
Как это сделать:
Вот быстрый способ тесно обнять ваши строки в Bash:
# Конкатенация путем размещения строк рядом друг с другом
greeting="Привет, "
name="мир!"
welcome=$greeting$name
echo $welcome # Вывод: Привет, мир!
# Использование фигурных скобок для ясности
version="версия"
number=1
full_version=${version}_${number}
echo $full_version # Вывод: версия_1
# Конкатенация с переменными и литералами
timestamp=$(date +%Y%m%d) # Получает текущую дату в формате ГГГГММДД
filename="backup_${timestamp}.tar.gz"
echo $filename # Вывод: backup_20230315.tar.gz
Подробнее
Во времена, когда правили землей командные строки и скрипты, а не графические интерфейсы, конкатенация строк всегда была неотъемлемой частью, поскольку она позволяла динамично манипулировать командами и файлами.
Одной из исторических альтернатив была команда expr
, которая теперь кажется реликтом:
older_way=$(expr $greeting $name)
Но Bash сказал: “Кому нужны эти хлопоты?” и сделал это естественным образом. Как? Ну, Bash обращается со строками как с уютными друзьями: поставьте их рядом, и они сами собой сольются в одну длинную строку.
Под капотом Bash обрабатывает это без каких-либо специальных функций или синтаксиса для конкатенации. Слова или переменные просто текут вместе. Однако, если ваши переменные могут начинаться с цифры или подчеркивания, обычно их заключают в фигурные скобки, чтобы избежать путаницы с другими именами переменных.
Однако есть подвох: пробелы имеют значение. Если вы не будете осторожны, можете получить нежелательные пробелы или слипшийся беспорядок.
Современная альтернатива - использование функции printf
, которая предлагает вам больше контроля над форматированием:
printf -v full_greeting "%s%s" "$greeting" "$name"
echo $full_greeting # Вывод: Привет, мир!
См. также
- Руководство по GNU Bash для изучения всех аспектов Bash.
- Продвинутое руководство по написанию скриптов в Bash для изучения более сложных приемов и примеров.