HOWTO · Linux

Come concatenare stringhe in Bash

Scopri come concatenare stringhe in Bash: affianca valori, aggiungi testo con +=, costruisci una stringa in un ciclo o inserisci l'output di un comando. Gli esempi mostrano come gestire gli spazi e mantenere correttamente le virgolette nelle espansioni.

In questa pagina

In Bash puoi concatenare stringhe affiancando valori tra virgolette oppure aggiungendo testo a una variabile esistente con +=. Uno spazio viene incluso solo se lo inserisci nel valore assegnato.

Metodo 1: concatenazione di base

Per unire due valori, affianca le rispettive espansioni tra virgolette. Inserisci tra le virgolette anche l’eventuale separatore:

string1="Hello"
string2="World"
result="$string1 $string2"
printf '%s\n' "$result"

In questo esempio result contiene Hello World, perché nell’assegnazione c’è uno spazio tra $string1 e $string2. Quando passi un valore a un comando, racchiudi le espansioni tra virgolette, come in printf '%s\n' "$result": così spazi e caratteri jolly restano parte del valore, senza suddivisione in parole né espansione dei nomi di percorso. Le parentesi graffe delimitano il nome di una variabile quando il testo adiacente potrebbe essere interpretato come parte del nome: "${string1}_suffix". Le variabili Bash non hanno un tipo fisso, stringa o intero: puoi quindi includere come testo anche un valore che sembra numerico, per esempio assegnando number=42 e poi label="ID: $number".

Metodo 2: usare l’operatore +=

Usa += per aggiungere il testo a destra al valore corrente di una variabile:

greeting="Hello"
greeting+=" World"
printf '%s\n' "$greeting"

Lo spazio iniziale in " World" fa parte del testo aggiunto, quindi greeting contiene Hello World. In questo caso += aggiorna la stessa variabile aggiungendovi testo; non esegue una somma aritmetica.

Metodo 3: concatenare più stringhe

Puoi formare un unico valore affiancando espansioni tra virgolette e testo letterale. Inserisci i separatori nei punti desiderati:

first="Bash"
second="is"
third="great!"
combined="$first $second $third"
printf '%s\n' "$combined"

Le tre espansioni vengono unite nell’ordine indicato; i due spazi letterali nell’assegnazione fungono da separatori. Se il formato desiderato non prevede spazi, omettili: Bash non inserisce separatori automaticamente.

Metodo 4: concatenare stringhe nei cicli

Aggiungi gli elementi uno alla volta. Questo esempio inserisce uno spazio tra gli elementi, senza lasciare uno spazio finale:

result=""
separator=""
for word in "Learning" "Bash" "is" "fun"
do
    result+="${separator}${word}"
    separator=" "
done
printf '%s\n' "$result"

Il primo elemento viene aggiunto senza separatore. Dopo ogni elemento, separator diventa uno spazio: così gli elementi successivi sono separati e il valore finale termina con fun. Puoi sostituire le parole tra virgolette con i valori del tuo ciclo; racchiudi tra virgolette le espansioni che potrebbero contenere spazi o caratteri jolly della shell.

Metodo 5: usare la sostituzione di comando

La sostituzione di comando, scritta come $(...), esegue un comando e inserisce il suo output standard nell’assegnazione che la contiene:

name="John"
greeting="Hello, $(printf '%s' "$name")!"
printf '%s\n' "$greeting"

L’output del comando viene inserito tra Hello, e !. La sostituzione di comando rimuove i caratteri di nuova riga finali dall’output; racchiudi tra virgolette i valori usati all’interno del comando e la variabile risultante quando la passi come argomento.

Conclusione

Per concatenare stringhe in Bash, affianca valori tra virgolette, aggiungi esplicitamente i separatori oppure usa += per aggiungere testo a un valore esistente. Un ciclo può ripetere l’operazione e $(...) può inserire l’output di un comando. Quando passi valori ai comandi, racchiudi le espansioni tra virgolette affinché spazi e caratteri jolly restino parte del valore.

FAQ

  1. Come concateno due stringhe in Bash?
    Assegna espansioni tra virgolette una accanto all’altra, per esempio combined="${first}${second}", oppure aggiungi una stringa all’altra con combined+="$second". Se il risultato deve contenere uno spazio, inseriscilo nel testo tra virgolette.

  2. Posso concatenare stringhe in un ciclo?
    Sì. Aggiungi ogni elemento a una variabile che raccoglie il risultato usando +=; se il valore finale richiede un separatore, inseriscilo esplicitamente tra gli elementi.

  3. Che cos’è la sostituzione di comando in Bash?
    $(...) esegue un comando e inserisce il suo output standard nel testo circostante. I caratteri di nuova riga finali dell’output vengono rimossi.

  4. Come posso trovare la lunghezza di una stringa?
    Usa ${#value} per ottenere la lunghezza del valore di una variabile Bash. Il conteggio dei caratteri può dipendere dalle impostazioni locali attive; con le impostazioni locali C vengono contati i byte.

  5. Posso concatenare stringhe con caratteri speciali?
    Sì. Le virgolette doppie preservano gli spazi e impediscono l’espansione dei caratteri jolly nei valori delle variabili, ma caratteri della sintassi della shell come $, i backtick e le virgolette possono comunque richiedere virgolette o caratteri di escape quando li inserisci letteralmente. Per inserire testo arbitrario, usa virgolette o caratteri di escape in modo che la shell non ne interpreti i caratteri prima dell’assegnazione.