Muszę połączyć dwa ciągi w bash, aby:
string1=hello
string2=world
mystring=string1+string2
echo mystring
powinien produkować
Witaj świecie
Muszę połączyć dwa ciągi w bash, aby:
string1=hello
string2=world
mystring=string1+string2
echo mystring
powinien produkować
Witaj świecie
Odpowiedzi:
Nie musisz używać {}, chyba że zamierzasz użyć parametrów zmiennych bash lub natychmiast dołączyć znak, który byłby prawidłowy jako część identyfikatora. Nie musisz także używać podwójnych cudzysłowów, chyba że parametry będą zawierać znaki specjalne.
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"
Jeśli potrzebujesz połączyć zmienne z literałami:
string1=hello
string2=world
mystring="some ${string1} arbitrary ${string2} text"
echo $mystring
będzie produkować:
cześć, dowolny tekst świata
${var}
formatu w dowolnym momencie, ale potrzebujesz go tylko wtedy, gdy $var
zaraz po nim $vararbitary
pojawi się inny prawidłowy znak o zmiennej nazwie ... np .: zinterpretuje zmienną o nazwie „vararbitary”, ale możesz ją obejść, używając ${var}arbitary
.... ups, właśnie widziałem abshmera Khamera .. ale równie dobrze mogę zostawić komentarz tutaj.
Jeśli chcesz połączyć wiele zmiennych, możesz także użyć +=
do dodania ciągów .. Może to zwiększyć czytelność ..
mystring=${string1}
mystring+=${string2}
mystring+=${string3}
mystring+=${string4}
echo ${mystring}
Jak wspomniano w innych odpowiedziach, {} nie są tutaj potrzebne, ale osobiście zawsze używam ich, aby uniknąć błędów składniowych.
+=
mogą być również wykorzystywane do dołączania wartości do tablic: array+=($b)
.
join
może również zrobić to za Ciebie.