What is a heredoc? Here Documents Explained | Linux Terminal 201 - HakTip 179
Sommario:
Durante la scrittura di script di shell potresti trovarti in una situazione in cui devi passare un blocco di testo o codice multilinea a un comando interattivo, come
tee
,
cat
o
sftp
.
In Bash e altre shell come Zsh, un documento Here (Heredoc) è un tipo di reindirizzamento che consente di passare più righe di input a un comando.
La sintassi della scrittura HereDoc assume la forma seguente:
<< 'DELIMITER' HERE-DOCUMENT DELIMITER
- La prima riga inizia con un comando facoltativo seguito dallo speciale operatore di reindirizzamento
<<e dall'identificatore di delimitazione.- È possibile utilizzare qualsiasi stringa come identificatore di delimitazione, i più comunemente utilizzati sono EOF o END.Se l'identificatore di delimitazione non è quotato, la shell sostituirà tutte le variabili, i comandi e i caratteri speciali prima di passare le righe del documento qui al comando. segno meno per l'operatore di reindirizzamento
<<-, tutti i caratteri di tabulazione principali verranno ignorati. Ciò consente di utilizzare il rientro durante la scrittura di documenti qui negli script di shell. Non sono consentiti i principali spazi bianchi, ma solo la scheda.
Il blocco qui-documento può contenere stringhe, variabili, comandi e qualsiasi altro tipo di input. L'ultima riga termina con l'identificatore delimitante. Lo spazio bianco davanti al delimitatore non è consentito. - È possibile utilizzare qualsiasi stringa come identificatore di delimitazione, i più comunemente utilizzati sono EOF o END.Se l'identificatore di delimitazione non è quotato, la shell sostituirà tutte le variabili, i comandi e i caratteri speciali prima di passare le righe del documento qui al comando. segno meno per l'operatore di reindirizzamento
Esempi di base di Heredoc
In questa sezione, vedremo alcuni esempi di base su come usare l'ereditarietà.
Heredoc è spesso usato in combinazione con il comando cat.
Nel seguente esempio, stiamo passando due righe di testo contenenti una variabile d'ambiente e un comando per
cat
usando un documento qui.
cat << EOF The current working directory is: $PWD You are logged in as: $(whoami) EOF
Come puoi vedere dall'output seguente, vengono sostituiti sia l'output della variabile che quello del comando:
The current working directory is: /home/linuxize You are logged in as: linuxize
Vediamo cosa accadrà se racchiudiamo il delimitatore tra virgolette singole o doppie.
cat <<- "EOF" The current working directory is: $PWD You are logged in as: $(whoami) EOF
Si può notare che quando il delimitatore viene quotato, la shell non esegue l'espansione dei parametri e la sostituzione dei comandi.
The current working directory is: $PWD You are logged in as: $(whoami)
if true; then cat <<- EOF Line with a leading tab. EOF fi
Line with a leading tab.
Invece di visualizzare l'output sullo schermo, è possibile reindirizzarlo a un file utilizzando gli operatori
>
,
>>
.
cat << EOF > file.txt The current working directory is: $PWD You are logged in as: $(whoami) EOF
Se il file.txt non esiste verrà creato. Quando si utilizza
>
il file verrà sovrascritto, mentre
>>
aggiungerà l'output al file.
L'ingresso heredoc può anche essere convogliato. Nell'esempio seguente il comando
sed
sostituirà tutte le istanze del carattere
l
con
e
:
cat <<'EOF' | sed 's/l/e/g' Hello World EOF
Heeeo Wored
Per scrivere i dati inviati in un file:
cat <<'EOF' | sed 's/l/e/g' > file.txt Hello World EOF
Usando Heredoc con SSH
L'uso di Heredoc è uno dei modi più convenienti e semplici per eseguire più comandi su un sistema remoto tramite SSH.
Quando si utilizza il delimitatore non quotato, assicurarsi di evitare tutte le variabili, i comandi e i caratteri speciali, altrimenti verranno interpolati localmente:
ssh -T [email protected] << EOF echo "The current local working directory is: $PWD" echo "The current remote working directory is: \$PWD" EOF
The current local working directory is: /home/linuxize The current remote working directory is: /home/user
È inoltre possibile impostare un'autenticazione basata su chiave SSH e connettersi ai server Linux senza immettere una password.
Conclusione
In questa guida, hai imparato cos'è
heredoc
e come usarlo negli script della shell.
Microsoft Research Asia assegna i gate a 10 anni Bash
Microsoft Research Asia è passata da una dozzina di persone nel 1998 a più di 350 un decennio dopo.
Come eseguire Bash su Ubuntu su Windows 10
L`abilitazione di Windows Subsystem per Linux consente di eseguire Bash su Ubuntu su Windows 10, script Bash , Strumenti da riga di comando di Linux, strumenti Linux-first.
Matrici di Bash
Le matrici sono una delle strutture di dati più utilizzate e fondamentali. In questo articolo, tratteremo gli array Bash e spiegheremo come usarli negli script Bash.







