Гид по технологиям

Конкатенация строк в Bash — примеры и советы

4 min read Bash Обновлено 24 Nov 2025
Конкатенация строк в Bash — примеры и советы
Конкатенация строк в Bash — примеры и советы

рабочая станция с кодом на экране

Конкатенация — процесс объединения двух или более значений в одно. В программировании это обычно означает склеивание строк. В Bash это простая и часто используемая операция: Bash трактует значения как строки по умолчанию, поэтому проблем с типами обычно не возникает.

Ниже показаны основные подходы, советы по безопасности, типичные ошибки и проверочные тесты.

Основные способы объединения строк

1) Оператор +=

Самый прямой способ — добавить к существующей переменной другую строку с помощью +=.

#!/usr/bin/env bash

s="Hello"
s+=" World, from MUO"
echo "$s"

Ожидаемый вывод:

Hello World, from MUO

пример конкатенации с оператором += в терминале

Если нужно объединить две переменные, просто добавьте вторую переменную:

#!/usr/bin/env bash

s="Merry"
d=" Christmas"
s+=$d
echo "$s"

Вывод:

Merry Christmas

2) Последовательная запись (смежные переменные)

Более простая форма — записать переменные подряд при расширении или в echo. Это самый наглядный способ.

#!/usr/bin/env bash

s="Manchester"
b="City"
echo "$s $b"

Вывод:

Manchester City

Параметрическое расширение позволяет вставлять переменные внутрь литералов:

#!/usr/bin/env bash

s="Manchester City"
c="Erling Haaland plays in ${s}"
echo "$c"

Вывод:

Erling Haaland plays in Manchester City

соединение литералов и переменных в примере

3) Соединение строк и чисел

Bash не проверяет типы для простых операций со строками, поэтому можно прямо добавлять числа:

#!/usr/bin/env bash

a="Hundred is "
a+=100
echo "$a"

Вывод:

Hundred is 100

4) Форматирование с printf

printf удобен, когда нужно контролировать формат (отступы, выравнивание, специфичные преобразования):

#!/usr/bin/env bash

name="Alice"
greeting=$(printf "%s, %s!" "Hello" "$name")
echo "$greeting"

Вывод:

Hello, Alice!

Printf полезен для международных форматов, чисел и явного управления экранированием.

Частые ошибки и когда методы не подходят

  • Неправильное использование кавычек. echo $var без кавычек приводит к разбиению по IFS и потере пробелов.
  • Неинициализированные переменные: s+=$d при unset s будет работать, но лучше инициализировать явно.
  • Если переменная содержит специальные символы (новые строки, знаки доллара, обратные кавычки), не забывайте экранировать или использовать printf.
  • Для бинарных данных или больших объёмов текстов лучше использовать файловые операции, а не конкатенацию в памяти.

Important: всегда оборачивайте расширения переменных в двойные кавычки при выводе или при присвоении, чтобы сохранить пробелы и спецсимволы: echo “$s”.

Альтернативные подходы и полезные приёмы

  • Команда printf — для форматированного вывода и избежания неожиданных подстановок.
  • Использование массивов для безопасного объединения слов и последующего join через IFS:
#!/usr/bin/env bash

parts=("one" "two three" "four")
( IFS=","; echo "${parts[*]}" )
  • Хранить шаблоны в here-doc или файлах и подставлять переменные через envsubst, если требуется шаблонизация.

Проверочные тесты и критерии приёмки

Критерии приёмки:

  • Скрипт корректно выводит ожидаемые строки для трёх тестовых случаев: простая конкатенация, конкатенация с пробелами и с числом.
  • Параметры с пробелами выводятся без усечения (проверить echo “$var”).
  • Нет выполнения произвольного кода при подстановке значений, содержащих символы командной подстановки.

Минимальные тесты (пример):

  • Вход: s=”Hi”; s+=” there” → Ожидается “Hi there”.
  • Вход: s=”a b”; echo $s → Ожидается “a b” при echo “$s”, но “a b” при echo $s может превратиться в два слова.
  • Вход: a=”Hundred is “; a+=100 → “Hundred is 100”.

Чек-лист для разработчика и администратора

Разработчик:

  • Использовать кавычки при выводе переменных.
  • Проверить, что шаблон не содержит опасных подстановок.
  • Использовать printf при необходимости форматирования.

Системный администратор:

  • Проверить скрипты на наличие вставки пользовательских данных в команды shell.
  • Добавить set -euo pipefail в критичных скриптах для предсказуемого поведения.

Короткая методология (как подойти к задаче)

  1. Определите, нужно ли простое склеивание или форматирование. 2. Для простого склеивания используйте += или смежную запись. 3. Для сложного форматирования — printf. 4. Всегда кавычьте результирующие строки при выводе или передаче в другие команды.

Ментальные модели и эвристики

  • Представляйте конкатенацию как обычную операцию склеивания: значения просто ставятся рядом.
  • Всегда думайте о кавычках — это фильтр от большинства неожиданных проблем.

1-line глоссарий

  • Конкатенация: объединение двух или более строк в одну.

Итог

Конкатенация в Bash — простая и гибкая операция. Для большинства задач достаточно += или последовательной записи. Для форматирования и безопасности используйте printf и кавычки. Проверьте скрипты тестами на строки с пробелами и специальными символами и следите за безопасностью при подстановке внешних данных.

Notes: если скрипт обрабатывает пользовательский ввод, избегайте подстановки этого ввода в команды без строгого экранирования.

Поделиться: X/Twitter Facebook LinkedIn Telegram
Автор
Редакция

Похожие материалы

Как устроить идеальную вечеринку для просмотра ТВ
Развлечения

Как устроить идеальную вечеринку для просмотра ТВ

Как распаковать несколько RAR‑файлов сразу
Инструменты

Как распаковать несколько RAR‑файлов сразу

Приватный просмотр в Linux: как и зачем
Приватность

Приватный просмотр в Linux: как и зачем

Windows 11 не видит iPod — способы исправить
Руководство

Windows 11 не видит iPod — способы исправить

PS5: как настроить игровые пресеты
Консоли

PS5: как настроить игровые пресеты

Как переключить камеру в Omegle на iPhone и Android
Руководство

Как переключить камеру в Omegle на iPhone и Android