What is a heredoc? Here Documents Explained | Linux Terminal 201 - HakTip 179
Obsah:
Při psaní shellových skriptů můžete být v situaci, kdy budete muset předat víceřádkový blok textu nebo kódu interaktivnímu příkazu, jako je
tee
,
cat
nebo
sftp
.
V Bash a dalších skořápkách, jako je Zsh, je dokument Here (Heredoc) typ přesměrování, které vám umožní předat více řádků vstupu příkazu.
Syntaxe psaní HereDoc má následující podobu:
<< 'DELIMITER' HERE-DOCUMENT DELIMITER
- První řádek začíná volitelným příkazem, za nímž následuje speciální operátor přesměrování
<<
a oddělovací identifikátor.- Jako oddělovací identifikátor můžete použít libovolný řetězec, nejčastěji používané jsou EOF nebo END.If je oddělovací identifikátor nekotován, shell před výměnou řádků zde dokumentu do příkazu nahradí všechny proměnné, příkazy a speciální znaky. znaménko mínus operátorovi přesměrování
<<-
způsobí, že budou ignorovány všechny hlavní znaky záložky. To vám umožní použít odsazení při psaní zde-dokumentů v shellových skriptech. Hlavní znaky mezery nejsou povoleny, pouze karta.
- Jako oddělovací identifikátor můžete použít libovolný řetězec, nejčastěji používané jsou EOF nebo END.If je oddělovací identifikátor nekotován, shell před výměnou řádků zde dokumentu do příkazu nahradí všechny proměnné, příkazy a speciální znaky. znaménko mínus operátorovi přesměrování
Základní příklady Heredoc
V této části se podíváme na některé základní příklady, jak používat heredoc.
Heredoc se nejčastěji používá v kombinaci s příkazem cat.
V následujícím příkladu předáváme dva řádky textu obsahující proměnnou prostředí a příkaz ke
cat
pomocí dokumentu zde.
cat << EOF The current working directory is: $PWD You are logged in as: $(whoami) EOF
Jak je vidět z výstupu níže, jsou nahrazeny jak proměnná, tak příkazový výstup:
The current working directory is: /home/linuxize You are logged in as: linuxize
Uvidíme, co se stane, pokud oddělovač uzavřeme do jednoduchých nebo dvojitých uvozovek.
cat <<- "EOF" The current working directory is: $PWD You are logged in as: $(whoami) EOF
Můžete si všimnout, že když je oddělovač citován, shelly neprovádí žádné rozšíření parametrů ani nahrazování příkazů.
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.
Místo zobrazení výstupu na obrazovce jej můžete přesměrovat do souboru pomocí operátorů
>
,
>>
.
cat << EOF > file.txt The current working directory is: $PWD You are logged in as: $(whoami) EOF
Pokud file.txt neexistuje, bude vytvořen. Při použití
>
bude soubor přepsán, zatímco
>>
připojí výstup k souboru.
Heredoc vstup může být také potrubím. V následujícím příkladu příkaz
sed
nahradí všechny instance znaku
l
e
:
cat <<'EOF' | sed 's/l/e/g' Hello World EOF
Heeeo Wored
Chcete-li zapsat potrubní data do souboru:
cat <<'EOF' | sed 's/l/e/g' > file.txt Hello World EOF
Používání Heredoc s SSH
Použití Heredoc je jedním z nejpohodlnějších a nejjednodušších způsobů provádění více příkazů na vzdáleném systému přes SSH.
Pokud používáte oddělovač bez uvozovek, ujistěte se, že jste unikli všem proměnným, příkazům a speciálním znakům, jinak budou lokálně interpolovány:
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
Můžete také nastavit autentizaci pomocí klíče SSH a připojit se k serverům Linux bez zadání hesla.
Závěr
V této příručce jste se dozvěděli, co je
heredoc
a jak je používat ve svých shellových skriptech.
Microsoft Research Asia hostuje brány v 10 letech Bash

Microsoft Research Asie vzrostla z tuctu lidí v roce 1998 na více než 350 za deset let později.
Jak spustit Bash na Ubuntu v systému Windows 10

Povolení systému Windows Subsystem for Linux vám umožní spustit Bash na Ubuntu v systému Windows 10, Bash skripty , Nástroje pro příkazový řádek Linux, první nástroje pro Linux
Bash pole

Pole jsou jednou z nejpoužívanějších a základních datových struktur. V tomto článku se budeme zabývat Bash poli a vysvětlíme, jak je používat ve vašich Bash skriptech.