как объединить строковые переменные в третью?

36

Мне нужно объединить две строки в Bash, чтобы:

string1=hello
string2=world

mystring=string1+string2

echo mystring должен производить

Привет, мир

michelemarcon
источник
Терминальная команда joinтакже может сделать это за вас.
Лео Леопольд Герц 준영

Ответы:

38

просто объедините переменные:

mystring="$string1$string2"
SiegeX
источник
51

Вам не нужно использовать {}, если вы не собираетесь использовать параметры переменной bash или немедленно добавить символ, который будет действительным как часть идентификатора. Вам также не нужно использовать двойные кавычки, если ваши параметры не будут включать специальные символы.

x=foo
y=bar
z=$x$y        # $z is now "foobar"
z="$x$y"      # $z is still "foobar"
z="$xand$y"   # does not work
z="${x}and$y" # does work, "fooandbar"
z="$x and $y" # does work, "foo and bar"
Хамер
источник
2
Это то, что я искал [z = "$ xand $ y" # не работает ..... z = "$ {x} и $ y" # работает, "fooandbar"]. Спасибо.
blokeish
18

Если вам нужно объединить переменные с литеральными строками:

string1=hello
string2=world
mystring="some ${string1} arbitrary ${string2} text"

echo $mystring будет производить:

какой-нибудь привет произвольный текст мира

phunehehe
источник
6
Вы можете использовать ${var}формат в любое время, но вам он нужен только тогда, когда $varза ним сразу следует другой допустимый символ имени переменной ... например: $vararbitaryбудет интерпретировать переменную с именем "vararbitary", но вы можете обойти ее, используя ${var}arbitary.... упс, я только что видел абзер Хамера ... но я могу также оставить комментарий здесь.
Peter.O
11

Если вы хотите объединить много переменных, вы также можете использовать +=для добавления строк .. Это может повысить читабельность.

mystring=${string1}
mystring+=${string2}
mystring+=${string3}
mystring+=${string4}
echo ${mystring}

Как уже упоминалось в других ответах, {} здесь не нужны, но я лично всегда использую их, чтобы избежать некоторых синтаксических ошибок.

+=также может быть использован для добавления значения в массивы: array+=($b).

Mariux
источник