Конкатенация строк в Bash: 3 простых способа
Конкатенация — процесс склеивания двух значений в одно. Склеивание строк — базовая операция в программировании; она встречается во всех типах ПО.
Разные языки программирования реализуют конкатенацию по‑разному. Bash предлагает несколько простых способов объединять строки. Ниже — практическое руководство с примерами и рекомендациями по применению.
Использование оператора +=
Оператор += позволяет приписать к существующей переменной дополнительную строку. Сначала объявите переменную с первой частью строки, затем используйте +=, чтобы добавить вторую часть. Выведите результат командой echo.
Пример:
#!/usr/bin/bash
s="Hello"
s+=" World, from MUO"
echo "$s"
Ожидаемый вывод: “Hello World, from MUO”.
В примере конкатенация выполняется между переменной и строковым литералом. Чтобы объединить две переменные, замените литерал на имя второй переменной:
#!/usr/bin/bash
s="Merry"
d=" Christmas"
s+=$d
echo "$s"
Вывод: “Merry Christmas”.
Важно: при использовании += следите за пробелами в литералах — они влияют на итоговую строку.
Последовательная запись переменных
Самый простой способ — записать переменные подряд в echo. Он работает во всех случаях, хотя не всегда самый аккуратный для сложных сценариев.
#!/usr/bin/bash
s="Manchester"
b="City"
echo "$s $b"
Вывод: “Manchester City”.
Также можно использовать расширение параметров для встраивания переменной в строковый литерал:
#!/usr/bin/bash
s="Manchester City"
c="Erling Haaland plays in ${s}"
echo "$c"
Вывод: “Erling Haaland plays in Manchester City”.
Конкатенация строк и чисел
Bash трактует значения как строки по умолчанию. Поэтому склеивание строки и числа происходит без ошибок преобразования типов. Подходы те же: += или последовательная запись.
#!/usr/bin/bash
a="Hundred is "
a+=100
echo "$a"Вывод: “Hundred is 100”.
Важно: если вы затем будете выполнять арифметику с переменной, убедитесь, что используете соответствующие операции или явное преобразование.
Когда методы не подходят
- Если вам нужны высокопроизводительные операции над огромными объёмами текста, лучше использовать sed, awk, Perl или специализированные утилиты. Bash подходит для скриптов и небольших строковых операций.
- Если строки содержат специальные символы (переводы строк, NUL, управляющие последовательности), используйте правильную экранизацию или утилиты, устойчивые к бинарным данным.
- Для локализации и работы с Unicode в старых sh-совместимых средах поведение может отличаться.
Альтернативные подходы и приёмы
- Использовать printf для форматированного вывода: printf “%s%s” “$a” “$b”.
- Собрать массив и потом объединить его через printf или специальную функцию — удобно для динамического количества частей.
- Для больших текстовых потоков — читать и обрабатывать через awk/perl или перенаправлять в файл и использовать cat.
Проверочный чек-лист перед использованием
- Убедиться, что в переменных нет неожиданных пробелов или переводов строк.
- Проверить, нужны ли кавычки при выводе (обычно да: “$var”).
- Если ожидается арифметика — преобразовать строку в число отдельно.
- Подумать о производительности при большом количестве конкатенаций в цикле.
Критерии приёмки
- Скрипт корректно объединяет тестовые строки с пробелами и без.
- Непосредственные значения и переменные не теряют символы и экранирование.
- Поведение на пустых строках предсказуемо (определено в тестах).
Короткий справочник (чистый приём)
- s+=”text” — приписать литерал;
- s+=$other — приписать содержимое другой переменной;
- echo “$a $b” — быстрый вывод нескольких частей;
- printf “%s%s” “$a” “$b” — точное форматирование.
Часто задаваемые вопросы
Можно ли добавлять числа напрямую к строкам?
Да. Bash будет трактовать добавление как строковую операцию, поэтому a+=”100” или a+=100 оба работают.
Нужно ли экранировать пробелы?
Да. При выводе используйте кавычки: echo “$a $b” — это гарантирует сохранение пробелов и спецсимволов.
Чем заменить конкатенацию в тесных циклах?
Для больших циклов используйте накопитель в файле или инструмент, оптимизированный для текстовой обработки (awk, perl), чтобы избежать медленной многократной перераспеределки памяти в большой строке.
Глоссарий — одно предложение на термин
- Конкатенация: объединение двух или более строк в одну.
Резюме
- В Bash есть несколько простых способов объединить строки: +=, последовательная запись и printf.
- Для большинства сценариев достаточно += или echo с кавычками.
- Для масштабных или бинарных операций рассматривайте awk/perl или потоковые утилиты.
Важно: всегда тестируйте поведение на краевых данных (пустые строки, спецсимволы, Unicode).
Похожие материалы
RDP: полный гид по настройке и безопасности
Android как клавиатура и трекпад для Windows
Советы и приёмы для работы с PDF
Calibration в Lightroom Classic: как и когда использовать
Отключить Siri Suggestions на iPhone