it-swarm-eu.dev

jak zřetězit proměnné řetězce na třetinu?

Potřebuji zřetězit dva řetězce v bash, takže:

string1=hello
string2=world

mystring=string1+string2

echo mystring by měl produkovat

ahoj světe

39
michelemarcon

jednoduše zřetězit proměnné:

mystring="$string1$string2"
40
SiegeX

Není nutné používat {}, pokud nebudete používat parametry bash proměnné nebo nepřipojíte znak, který by byl platný jako součást identifikátoru. Také nemusíte používat dvojité uvozovky, pokud parametry neobsahují speciální znaky.

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

V případě, že potřebujete zřetězit proměnné pomocí řetězců literálu:

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

echo $mystring vytvoří:

nějaký ahoj libovolný světový text

19
phunehehe

Pokud chcete zřetězit mnoho proměnných, můžete k připojení řetězců použít také +=. To může zvýšit čitelnost ..

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

Jak je uvedeno v jiných odpovědích, {} zde nejsou potřeba, ale osobně je vždy používám, abych se vyhnul syntaktickým chybám.

+= Lze také použít k připojení hodnot k polím: array+=($b).

12
mariux