it-swarm-ru.tech

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

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

string1=hello
string2=world

mystring=string1+string2

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

привет мир

39
michelemarcon

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

mystring="$string1$string2"
40
SiegeX

Вам не нужно использовать {}, если вы не собираетесь использовать параметры переменной 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"
53
khamer

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

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

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

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

19
phunehehe

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

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

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

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

12
mariux