Как объединить строковые переменные в Bash
На PHP строки объединяются следующим образом:
$foo = "Hello";
$foo .= " World";
В результате переменная $foo становится равной "Hello World".
Как можно достичь такого же результата в Bash?
4 ответ(ов)
Чтобы объединить две переменные в Bash, вы можете просто записать их одну за другой. Например:
foo="Hello"
foo="${foo} World"
echo "${foo}"
Этот код выведет:
Hello World
В общем случае, для конкатенации двух переменных используйте следующий синтаксис:
a='Hello'
b='World'
c="${a} ${b}"
echo "${c}"
Результат выполнения этого кода будет таким же:
Hello World
Таким образом, правильно объединять строки можно при помощи фигурных скобок и пробела между ними для разделения.
В Bash также поддерживается оператор +=, как показано в следующем коде:
A="X Y"
A+=" Z"
echo "$A"
Вывод будет:
X Y Z
Этот код сначала инициализирует переменную A строкой "X Y", а затем добавляет к ней строку " Z" с помощью оператора +=. В результате при выводе переменной A мы получаем строку X Y Z.
Да, вы можете сделать это следующим образом:
$ var="myscript"
$ echo $var
myscript
$ var=${var}.sh
$ echo $var
myscript.sh
В этом примере мы сначала создаем переменную var и присваиваем ей значение "myscript". Затем мы выводим значение переменной с помощью команды echo. Далее мы добавляем к переменной .sh, используя синтаксис ${var}.sh, и снова выводим значение переменной, которая теперь равна "myscript.sh".
В приведенном вами примере:
bla=hello
laber=kthx
echo "${bla}ohai${laber}bye"
будет выводить:
helloohaikthxbye
Это полезно, когда
$blaohai
вызывает ошибку "переменная не найдена" (variable not found). Или если в ваших строках есть пробелы или другие специальные символы. Использование "${foo}" правильно экранирует всё, что вы вставляете в него.
Таким образом, использование фигурных скобок {} помогает избежать неоднозначностей и обеспечивает правильное объединение строк.
Когда нужны фигурные скобки вокруг переменных в оболочке?
Ошибка «Команда не найдена» при присвоении переменной в Bash
Как выводить команды оболочки по мере их выполнения
Как указать приватный SSH-ключ для выполнения команды shell в Git?
Расширение переменных внутри одинарных кавычек в команде Bash