Как объединить строковые переменные в 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?
Как сделать паузу в shell-скрипте на одну секунду перед продолжением?