come concatenare le variabili stringa in un terzo?


36

Devo concatenare due stringhe in bash, in modo che:

string1=hello
string2=world

mystring=string1+string2

echo mystring dovrebbe produrre

Ciao mondo


Il comando terminale joinpotrebbe anche fare la cosa per te.
Léo Léopold Hertz 준영

Risposte:


38

concatenare semplicemente le variabili:

mystring="$string1$string2"

51

Non è necessario utilizzare {} a meno che non si utilizzino i parametri della variabile bash o si aggiunga immediatamente un carattere che sarebbe valido come parte dell'identificatore. Inoltre, non è necessario utilizzare le virgolette doppie a meno che i parametri includano caratteri speciali.

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"

2
Questo è quello che stavo cercando [z = "$ xand $ y" # non funziona ..... z = "$ {x} e $ y" # funziona, "fooandbar"]. Grazie.
sanguinoso

18

Nel caso in cui sia necessario concatenare le variabili con stringhe letterali:

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

echo $mystring produrrà:

qualche ciao testo del mondo arbitrario


6
Puoi usare il ${var}formato ogni volta che vuoi, ma ti serve solo quando $vardeve essere immediatamente seguito da un altro carattere di nome variabile valido ... es: $vararbitaryinterpreterà una variabile chiamata "vararbitary", ma puoi aggirarlo usando ${var}arbitary.... oops, ho appena visto la risposta di Khamer .. ma potrei anche lasciare il commento qui.
Peter

11

Se si desidera concatenare molte variabili, è possibile utilizzare anche +=per aggiungere stringhe. Ciò può aumentare la leggibilità.

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

Come indicato da altre risposte, {} non è necessario qui, ma personalmente le uso sempre per evitare alcuni errori di sintassi.

+=può anche essere usato per aggiungere valori array: array+=($b).

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.