Questa guida rapida mostrerà i metodi per definire le variabili di stringa multilinea usando i personaggi di Escape ed Heredoc.
Personaggi Bash Escape
Bash, come la maggior parte dei linguaggi di programmazione, fornisce la possibilità di usare i caratteri di fuga. I personaggi di fuga ci consentono di invocare una nuova interpretazione delle sequenze di personaggi. Sebbene Bash abbia vari personaggi di fuga, dobbiamo solo preoccuparci di \ n (personaggio della nuova linea).
Ad esempio, se abbiamo una stringa multilinea in uno script, possiamo usare il carattere \ n per creare una nuova riga ove necessario.
Un esempio di tale caso d'uso è:
#!/Bin/Bash
str = "Questa è una stringa \ n-e un'altra \ n-e un'altra \ n-e quella finale"
echo -e $ str
L'esecuzione dello script sopra stampa le stringhe in una nuova riga in cui esiste il carattere \ n.
Hedoc
Il metodo sopra funziona bene per il testo della linea semplice. Tuttavia, se abbiamo bisogno di stampare un testo con altri caratteri speciali, contraccolpi e citazioni, diventa inutilmente complesso. Per risolvere un tale problema, possiamo usare Heredoc.
Cos'è un heEdoc?
Un Heredoc è un blocco di codice per scopi speciali che indica alla shell di leggere l'input dall'origine corrente fino a quando non incontra una riga contenente un delimitatore.
La sintassi per heredoc in bash è:
COMANDO << DELIMITER
..
Blocco hedoc
..
..
Delimitatore
I delimitatori in un Heredoc possono essere qualsiasi stringa. Tuttavia, le stringhe più comuni sono EOF, EOM o End.
Una volta che la shell incontra il delimitatore, sostituisce tutte le variabili, i comandi e i caratteri speciali e quindi passa le informazioni all'interno del blocco HEREDOC al comando principale.
Puoi includere caratteri speciali, stringhe regolari, variabili e altri comandi di shell nel blocco HEREDOC.
Assicurarsi di terminare il blocco HEREDOC con il delimitatore. Non aggiungere alcun spazio bianco prima del delimitatore.
String Multiline Using Heredoc
Supponiamo di avere la seguente stringa:
All'interno di uno script bash, possiamo creare una variabile e passare la stringa sopra a Cat come mostrato di seguito:
#!/Bin/Bash
string = $ (gatto << EOF
Documento
Eof
)
Echo $ String
Una volta eseguito lo script sopra, vedrai un output a:
Come puoi vedere, possiamo stampare l'intera stringa, compresi tutti i caratteri speciali.
Conclusione
Per questa guida, abbiamo discusso di come definire e utilizzare una stringa multilinea in uno script bash. Tuttavia, c'è di più in Heredoc di quanto discusso qui. Considera la seguente risorsa per saperne di più.