Склеивание строк

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  # Вывод: Привет, мир!

См. также