Jak połączyć łańcuchy w skrypcie bash?

21

Jak mogę połączyć łańcuchy i zmienne w skrypcie powłoki?

stringOne = "foo"

stringTwo = "everythingButBar"

stringThree = "? i?"

Chcę wypisać „foo i cokolwiekButBar”

Mosze
źródło

Odpowiedzi:

29

Nic specjalnego, wystarczy dodać je do deklaracji.

na przykład:

[Zypher@host01 monitor]$ stringOne="foo"
[Zypher@host01 monitor]$ stringTwo="anythingButBar"
[Zypher@host01 monitor]$ stringThree=$stringOne$stringTwo
[Zypher@host01 monitor]$ echo $stringThree 
fooanythingButBar

jeśli chcesz dosłowne słowo „i” między nimi:

[Zypher@host01 monitor]$ stringOne="foo"
[Zypher@host01 monitor]$ stringTwo="anythingButBar"
[Zypher@host01 monitor]$ stringThree="$stringOne and $stringTwo"
[Zypher@host01 monitor]$ echo $stringThree 
foo and anythingButBar
Zypher
źródło
4
Jeśli mogę coś zasugerować, twój monit jest głośny i przesłania twoją odpowiedź (a spacja po znaku dolara poprawiłaby czytelność). Coś w stylu $ stringOne="foo"na przykład. Ponadto monit nie powinien pojawiać się w linii wyjściowej (linii po echu). W przeciwnym razie +1.
Wstrzymano do odwołania.
10
echo ${stringOne}and${stringTwo}jeśli nie chcesz spacji
max taldykin
Możesz też zrobić stringThree=$stringOne" and "$stringTwo.
Armfoot
5

Jeśli zamiast tego miałeś:

stringOne="foo"
stringTwo="anythingButBar"
stringThree="%s and %s"

mógłbyś:

$ printf "$stringThree\n" "$stringOne" "$stringTwo"
foo and anythingButBar
Mikel
źródło