Одной из наиболее часто используемых строковых операций является конкатенация. Конкатенация строк – это просто причудливое программирующее слово для объединения строк путем добавления одной строки в конец другой.
В этой статье мы объясним, как объединять строки в Bash.
Самый простой способ объединить две или более строковые переменные – записать их одну за другой:
VAR1="Hello," VAR2=" World" VAR3="$VAR1$VAR2" echo "$VAR3"
Hello, World
Вы также можете объединить одну или несколько переменных с литеральными строками:
VAR1="Hello," VAR2="${VAR1}World" echo "$VAR2"
Hello, World
В приведенном выше примере переменная VAR1 заключена в фигурные скобки для защиты имени переменной от окружающих символов. Когда за переменной следует другой допустимый символ имени переменной, вы должны заключить его в фигурные скобки ${VAR1}.
Чтобы избежать каких-либо проблем с разделением слов или глобализацией, вы всегда должны пытаться использовать двойные кавычки вокруг имени переменной. Если вы хотите подавить интерполяцию переменных и специальную обработку символа обратной косой черты вместо двойных, используйте одинарные кавычки.
Bash не разделяет переменные по «типу», переменные обрабатываются как целое число или строка в зависимости от контекста. Вы также можете объединить переменные, которые содержат только цифры.
VAR1="Hello, " VAR2=2 VAR3=" Worlds" VAR4="$VAR1$VAR2$VAR3" echo "$VAR4"
Hello, 2 Worlds
Другой способ объединения строк в bash – добавление переменных или литеральных строк к переменной с помощью оператора +=:
VAR1="Hello, " VAR1+=" World" echo "$VAR1"
Hello, World
В следующем примере используется оператора += для объединения строк в цикле bash for :
VAR="" for ELEMENT in 'Hydrogen' 'Helium' 'Lithium' 'Beryllium'; do VAR+="${ELEMENT} " done echo "$VAR"
Hydrogen Helium Lithium Beryllium
Конкатенация строковых переменных является одной из самых фундаментальных операций в скриптах Bash. Прочитав эту статью, вы должны хорошо понимать, как объединять строки в Bash.
Если у вас есть какие-либо вопросы или отзывы, не стесняйтесь оставлять комментарии.
Это полезная статься, но тут следует добавить информацию о том как брать подстоку или имя файла без расширения.
${VAR:pos} – подстрока с позиции pos
${VAR:pos:len} – подстрока с позиции pos длинной length
и
В следующих операциях Pattern это выражение в формате glob – * – любая последовательность символов, ? – один символ.
${VAR/Pattern/Replacement} – замена первого вхождения Pattern на Replacement, если Replacement отсутствует, то Pattern удаляется
${VAR//Pattern/Replacement} – глобальная замена
$(VAR#Pattern} – удаление минимальной строки, соответствующей Pattern в начале строки (удаление префикса)
$(VAR##Pattern} – удаление максимальной строки, соответствующей Pattern в начале строки
$(VAR%Pattern} – удаление минимальной строки, соответствующей Pattern в конце строки (удаление суффикса)
$(VAR%%Pattern} – удаление максимальной строки, соответствующей Pattern в конце строки
Пример:
VAR=”file.test.txt”
echo ${VAR#file*.} => test.txt
echo ${VAR##file*.} => txt
echo ${VAR%.*} => file.test
echo ${VAR%%.*} => file