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

Конкатенация строк в Bash: 3 простых способа

4 min read Bash Обновлено 08 Jan 2026
Конкатенация строк в Bash — 3 способа
Конкатенация строк в 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).

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

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

RDP: полный гид по настройке и безопасности
Инфраструктура

RDP: полный гид по настройке и безопасности

Android как клавиатура и трекпад для Windows
Гайды

Android как клавиатура и трекпад для Windows

Советы и приёмы для работы с PDF
Документы

Советы и приёмы для работы с PDF

Calibration в Lightroom Classic: как и когда использовать
Фото

Calibration в Lightroom Classic: как и когда использовать

Отключить Siri Suggestions на iPhone
iOS

Отключить Siri Suggestions на iPhone

Рисование таблиц в Microsoft Word — руководство
Office

Рисование таблиц в Microsoft Word — руководство