simplesmente concatene as variáveis:
mystring="$string1$string2"
Eu preciso concatenar duas strings no bash, para que:
string1=hello
string2=world
mystring=string1+string2
echo mystring
deve produzir
helloworld
Não é necessário usar {}, a menos que você use parâmetros variáveis bash ou adicione um caractere imediato que seria válido como parte do identificador. Você também não precisa usar aspas duplas, a menos que seus parâmetros incluam caracteres especiais.
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"
Caso você precise concatenar variáveis com strings literais:
string1=hello
string2=world
mystring="some ${string1} arbitrary ${string2} text"
echo $mystring
produzirá:
some hello arbitrary world text
Se você quiser concatenar muitas variáveis, você também pode usar +=
para anexar strings. Isso pode aumentar a legibilidade.
mystring=${string1}
mystring+=${string2}
mystring+=${string3}
mystring+=${string4}
echo ${mystring}
Como mencionado por outras respostas, o {} não é necessário aqui, mas eu pessoalmente os uso sempre para evitar alguns erros de sintaxe.
+=
também pode ser usado para acrescentar valores a matrizes: array+=($b)
.