GNU/Linux >> Belajar Linux >  >> Linux

Tutorial Bash HereDoc Dengan Contoh

Pendahuluan

Dokumen di sini (HereDoc ) adalah bagian kode yang bertindak sebagai file terpisah. HereDoc adalah string multiline atau literal file untuk mengirimkan aliran input ke perintah dan program lain.

HereDocs sangat berguna saat mengarahkan beberapa perintah sekaligus, yang membantu membuat skrip Bash lebih rapi dan lebih mudah dipahami.

Artikel ini mengajarkan Anda dasar-dasar penggunaan notasi HereDoc dan beberapa kasus penggunaan umum.

Prasyarat

  • Akses ke baris perintah/terminal sebagai pengguna sudo.
  • Editor teks untuk menulis skrip Bash.
  • Perintah dasar Linux. Untuk referensi cepat, ambil lembar contekan perintah Linux kami.

Sintaks Bash HereDoc

Sintaks untuk menulis HereDoc adalah:

[COMMAND] <<[-] 'DELIMITER'
  Line 1
  Line 2
  ...
DELIMITER

Ini terdiri dari elemen-elemen berikut:

  • COMMAND adalah opsional. Berfungsi untuk semua perintah yang menerima pengalihan.
  • << adalah operator pengalihan untuk meneruskan HereDoc ke COMMAND .
  • - adalah parameter untuk penekanan tab.
  • DELIMITER di baris pertama mendefinisikan token pembatas HereDoc. END , EOT , dan EOF paling umum, tetapi kata multikarakter apa pun yang tidak akan muncul di badan berfungsi. Hilangkan tanda kutip tunggal pada baris pertama untuk mengizinkan ekspansi perintah dan variabel.
  • DELIMITER di baris terakhir menunjukkan akhir dari HereDoc. Gunakan kata yang sama dari baris pertama tanpa spasi di depan.

HereDoc itu sendiri berisi sejumlah baris dengan string, variabel, perintah, dan input lainnya.

Contoh Bash HereDoc

Bagian ini menampilkan cara menggunakan notasi HereDoc dalam berbagai situasi. Kasus penggunaan yang paling umum adalah dengan perintah cat.

String Multibaris

Buka terminal dan masukkan teks berikut, tekan Enter setelah setiap baris:

cat << EOF
Hello
World
EOF

cat perintah membaca HereDoc dan menulis konten ke terminal.

Ekspansi Variabel

HereDoc menerima penggunaan variabel dan membacanya.

Untuk melihat cara kerjanya, buat dua variabel di terminal:

var1="Hello"
var2="World"

Berikan HereDoc ke cat perintah untuk mencetak dua variabel bersama dengan variabel lingkungan:

cat << END
$var1
$var2
$PWD
END

Semua variabel berkembang, dan nilainya masing-masing dicetak ke terminal.

Perluasan Perintah

HereDocs menerima substitusi perintah. Jalankan kode berikut di terminal baris demi baris untuk melihat hasilnya:

cat << EOF
$(echo Hello)
$(whoami)
EOF

Mencakup setiap perintah di $() untuk mengevaluasi pernyataan dan mengambil hasilnya. Menghilangkan $() memperlakukan teks sebagai string.

Abaikan Variabel dan Ekspansi Perintah

Tambahkan tanda kutip tunggal atau ganda ke pembatas pertama untuk mengabaikan variabel dan ekspansi perintah di HereDoc.

Misalnya:

cat << "EOF"
$(echo Hello)
$(whoami)
$PWD
EOF

Menambahkan tanda kutip ke pembatas memperlakukan konten sebagai literal HereDoc.

Pemipaan dan Pengalihan

Gunakan pemipaan atau pengalihan untuk meneruskan hasil perintah ke perintah lain. Misalnya, buat skrip Bash dan tambahkan konten berikut untuk menyalurkan perintah:

#!/bin/bash

cat << EOF | base64 -d
SGVsbG8KV29ybGQK
EOF

Atau, gunakan notasi pengalihan untuk mencapai hasil yang sama:

#!/bin/bash

(base64 -d) < cat << EOF
SGVsbG8KV29ybGQK
EOF

Jalankan skrip Bash untuk melihat hasilnya.

Dalam kedua kasus, output dari cat dan perintah HereDoc menyalurkan (atau mengalihkan) ke base64 -d memerintah. Akibatnya, skrip menerjemahkan pesan dari HereDoc.

Tulis ke File

HereDoc memungkinkan penulisan dokumen multiline melalui satu perintah.

Untuk membuat file dan menyimpan konten HereDoc, gunakan format berikut:

cat << EOF > hello_world.txt
Hello
World
EOF

Jika dokumen tidak ada, perintah akan membuatnya. Periksa konten file untuk mengonfirmasi:

cat hello_world.txt

Konsol menampilkan konten file.

Penindasan Tab

Tambahkan tanda hubung (- ) setelah pengalihan untuk menekan tab utama. Misalnya, buat dan jalankan skrip berikut:

#!/bin/bash

cat <<- EOF
        Hello
        World
EOF

Tanpa penekanan tab, pesan dicetak ke konsol dengan lekukan. Menambahkan tanda hubung akan menghapus indentasi tab dan menampilkan pesan tanpa spasi di depan.

Pernyataan dan Perulangan Di Dalam

Saat bekerja dengan pernyataan dan loop dalam HereDoc, ingatlah perilaku berikut:

  • Kode di dalam pernyataan dan loop adalah menjorok. Tambahkan tanda hubung setelah operator pengalihan untuk mencetak pesan dari HereDoc tanpa lekukan.
  • Pembatas akhir tidak boleh memiliki spasi atau lekukan sebelumnya.

Coba kode contoh berikut untuk melihat cara menggunakan HereDoc di dalam pernyataan if:

#!/bin/bash

if true;
then
        cat <<- "END"
        Hello
        World
END
fi

Tanda hubung memastikan indentasi tidak muncul saat program berjalan. Pembatas akhir tidak menjorok, dan menambahkan spasi menyebabkan kesalahan.

Komentar Multibaris

HereDoc dengan perintah null (: ) menciptakan efek komentar blokir dalam skrip Bash.

Misalnya:

#!/bin/bash

: << 'END'
This is a comment
END

Menggunakan notasi HereDoc sebagai komentar blok tidak konvensional. Secara umum, Bash tidak mendukung komentar blokir.

Karakter Kabur

Untuk menghindari interpretasi karakter, tambahkan garis miring terbalik (\ ) sebelum karakter:

cat << EOF
\$100
EOF

Atau, hindari interpretasi karakter sepenuhnya dengan keluar dari pembatas:

cat << \EOF
$100
EOF

Menggunakan tanda kutip pada pembatas sama dalam kasus ini.

Fungsi

Tambahkan parameter ke fungsi dengan meneruskan informasi melalui HereDoc. Misalnya, buat fungsi untuk membaca baris dan menambahkan informasi melalui HereDoc:

#!/bin/bash

readLines(){
        read greeting
        read name
}

readLines << EOF
Hello
$USER
EOF

echo $greeting
echo $name

Fungsi menyimpan informasi yang disediakan oleh HereDoc ke dalam variabel.

Jalankan skrip untuk mencetak nilai variabel ke terminal.

HereDoc dan SSH

HereDoc nyaman untuk menjalankan banyak perintah pada mesin jarak jauh. Berikan HereDoc ke koneksi SSH untuk menjalankan banyak perintah.

Misalnya:

ssh [email protected] << EOF
echo "Local user: $USER"
echo "Remote user: \$USER"
EOF

Perintah mencetak pengguna lokal dan jarak jauh ke konsol.

HereDoc dan SFTP

SFTP membantu mentransfer data dengan aman melalui protokol SSH. Teruskan HereDoc untuk menjalankan beberapa perintah SFTP secara otomatis:

sftp [email protected] << EOF
put test.sh
EOF

Kode mengunggah file sampel ke mesin jarak jauh.


Linux
  1. vim Tutorial dengan Contoh Perintah

  2. Tutorial Status Keluar Bash Shell dengan Contoh Praktis

  3. Tutorial Perintah cURL dengan Contoh

  1. Perintah Nohup dengan Contoh

  2. Tutorial Bash Array Terbaik dengan 15 Contoh

  3. '&&' vs. '&' dengan perintah 'test' di Bash

  1. Tutorial Perintah Ping Linux dengan Contoh

  2. Perintah Bash wait dengan Contoh

  3. Perintah wc Linux dengan Contoh