Android

Bash heredoc

What is a heredoc? Here Documents Explained | Linux Terminal 201 - HakTip 179

What is a heredoc? Here Documents Explained | Linux Terminal 201 - HakTip 179

Tartalomjegyzék:

Anonim

A héja parancsfájlok írásakor olyan helyzetbe kerülhet, amikor át kell adnia egy soros szöveget vagy kódot egy interaktív parancsnak, például tee , cat vagy sftp .

A Bash-ban és más olyan kagylókban, mint a Zsh, a Here dokumentum (Heredoc) egy olyan átirányítás, amely lehetővé teszi, hogy több bemeneti sort átadjon egy parancsnak.

A HereDoc írásának szintaxisa a következőképpen alakul:

<< 'DELIMITER' HERE-DOCUMENT DELIMITER

  • Az első sor egy opcionális paranccsal kezdődik, amelyet a speciális átirányítási operátor << és a körülhatároló azonosító követ.
    • Bármely karakterláncot használhat határoló azonosítóként, a leggyakrabban használt EOF vagy END.Ha a határoló azonosító idézetlen, a héj minden változót, parancsot és speciális karaktert felvált, mielőtt átadja a here-document sorokat a parancsnak. mínusz jel az átirányítási operátor számára <<- , az összes vezető fül karakterét figyelmen kívül hagyja. Ez lehetővé teszi a behúzás használatát, ha a here-dokumentumokat shell szkriptekbe írja. A vezető szóköz karakterek használata nem engedélyezett, csak a fül.
    A here-document blokk tartalmazhat karakterláncokat, változókat, parancsokat és bármilyen más típusú inputot. Az utolsó sor a körülhatároló azonosítóval ér véget. A határoló előtti fehér hely nem megengedett.

Alapvető Heredoc példák

Ebben a szakaszban néhány alapvető példát mutatunk be a heredoc használatára.

A Heredoc-et leggyakrabban a macska paranccsal kombinálva használják.

A következő példában két olyan szövegsort adunk át, amely tartalmaz egy környezeti változót és egy parancsot a cat egy itt használt dokumentum segítségével.

cat << EOF The current working directory is: $PWD You are logged in as: $(whoami) EOF

Amint az alábbi kimenetből látható, mind a változó, mind a parancs kimenetét helyettesítik:

The current working directory is: /home/linuxize You are logged in as: linuxize

Lássuk, mi fog történni, ha egy elválasztó vagy dupla idézőjelbe vonjuk be a határolót.

cat <<- "EOF" The current working directory is: $PWD You are logged in as: $(whoami) EOF

Megfigyelheti, hogy amikor a határoló idéződik, a paraméter nem bővül, és a parancs cseréjét a héj nem végzi el.

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.

Ahelyett, hogy a kimenetet a képernyőn jelenítené meg, átirányíthatja egy fájlba a > , >> operátorok segítségével.

cat << EOF > file.txt The current working directory is: $PWD You are logged in as: $(whoami) EOF

Ha a file.txt nem létezik, akkor létrejön. A > használatakor a fájl felülíródik, míg a >> a kimenetet csatolja a fájlhoz.

A heredoc bemenet vezetékes is. A következő példában a sed parancs lecseréli az l karakter összes példányát e :

cat <<'EOF' | sed 's/l/e/g' Hello World EOF

Heeeo Wored

A vezetékes adatok fájlba írása:

cat <<'EOF' | sed 's/l/e/g' > file.txt Hello World EOF

A Heredoc használata az SSH-val

A Heredoc használata az egyik legkényelmesebb és legegyszerűbb módszer a parancsok végrehajtására távoli rendszeren SSH-n keresztül.

Nem idézőjelző használatakor ügyeljen arra, hogy elkerülje az összes változót, parancsot és speciális karaktert, különben lokálisan interpolálódnak:

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

Érdemes beállítani egy SSH-alapú hitelesítést, és jelszó megadása nélkül csatlakoznia kell a Linux-kiszolgálókhoz.

Következtetés

Ebben az útmutatóban megtudta, mi a heredoc és hogyan kell azt használni a shell parancsfájljaiban.

bash terminál