Devo concatenare due stringhe in bash, in modo che:
string1=hello
string2=world
mystring=string1+string2
echo mystring
dovrebbe produrre
Ciao mondo
Devo concatenare due stringhe in bash, in modo che:
string1=hello
string2=world
mystring=string1+string2
echo mystring
dovrebbe produrre
Ciao mondo
Risposte:
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"
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
${var}
formato ogni volta che vuoi, ma ti serve solo quando $var
deve essere immediatamente seguito da un altro carattere di nome variabile valido ... es: $vararbitary
interpreterà 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.
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)
.
join
potrebbe anche fare la cosa per te.