Ho una variabile final_list
che viene aggiunto da una variabile url
in un ciclo come:concatenazione di due variabili stringa in bash aggiungendo a capo
while read url; do
final_list="$final_list"$'\n'"$url"
done < file.txt
Con mia grande sorpresa il \n
è allegato come uno spazio, quindi il risultato è :
url1 url2 url3
mentre io volevo:
url1
url2
url3
Cosa c'è di sbagliato?
Grazie. Puoi spiegare un po 'cosa sta succedendo. –
La quotazione è della massima importanza nelle shell Unix. Senza virgolette la shell non applica alcuna regola di espansione e considera le nuove linee come spazio. – anubhava
Senza le virgolette, qualsiasi spazio bianco (incluse le nuove linee) nell'espansione di $ final_list viene trattato come separatore di parole, non come caratteri letterali da stampare. 'echo' riceve solo 3 argomenti, gli URL effettivi. Con le virgolette, 'echo' riceve un singolo argomento, la stringa che contiene gli URL e le nuove linee che li separano. – chepner