GNU/Linux >> Belajar Linux >  >> Linux

Bash baca Perintah

Bash dikirimkan dengan sejumlah perintah bawaan yang dapat Anda gunakan di baris perintah atau di skrip shell Anda.

Dalam artikel ini, kita akan menjelajahi read bawaan perintah.

Bash read #

bawaan

read adalah perintah bawaan bash yang membaca baris dari input standar (atau dari deskriptor file) dan membagi baris menjadi kata-kata. Kata pertama ditetapkan untuk nama depan, kata kedua untuk nama kedua, dan seterusnya.

Sintaks umum read built-in mengambil bentuk berikut:

read [options] [name...]

Untuk mengilustrasikan cara kerja perintah, buka terminal Anda, ketik read var1 var2 , dan tekan "Enter". Perintah akan menunggu pengguna memasukkan input. Ketik dua kata dan tekan “Enter”.

read var1 var2Hello, World!

Kata-kata ditetapkan ke nama yang diteruskan ke read perintah sebagai argumen. Gunakan echo atau printf untuk memverifikasinya:

echo $var1echo $var2
Hello, World!

Alih-alih mengetik di terminal, Anda dapat meneruskan input standar ke read menggunakan metode lain seperti perpipaan, here-string, atau heredoc:

echo "Hello, World!" | (read var1 var2; echo -e "$var1 \n$var2")
read dan echo diapit dalam tanda kurung dan dieksekusi dalam subkulit yang sama.
Hello, World!

Berikut adalah contoh menggunakan string di sini dan printf :

read -r var1 var2 <<< "Hello, World!"printf "var1: %s \nvar2: %s\n" "$var1" "$var2"
Var1: Hello, 
Var2: World! 

Ketika tidak ada argumen yang diberikan ke read perintah, seluruh baris ditugaskan ke REPLY variabel:

echo "Hello, world!" | (read; echo "$REPLY")
Hello, World!

Jika jumlah argumen yang diberikan ke read lebih besar dari jumlah kata yang dibaca dari input, kata-kata yang tersisa ditetapkan ke nama belakang:

echo "Linux is awesome." | (read var1 var2; echo -e "Var1: $var1 \nVar2: $var2")
Var1: Linux 
Var2: is awesome.

Jika tidak, jika jumlah argumen kurang dari jumlah nama, nilai kosong akan diberikan ke nama yang tersisa:

echo "Hello, World!" | (read var1 var2 var3; echo -e "Var1: $var1 \nVar2: $var2 \nVar3: $var3")
Var1: Hello, 
Var2: World! 
Var3: 

Secara default, read menginterpretasikan garis miring terbalik sebagai karakter pelarian, yang terkadang dapat menyebabkan perilaku yang tidak terduga. Untuk menonaktifkan pelolosan garis miring terbalik, jalankan perintah dengan -r pilihan.

Di bawah ini adalah contoh yang menunjukkan cara read berfungsi saat dipanggil dengan dan tanpa -r pilihan:

read <<< "Hello, \tWorld!"printf %s "$REPLY"
Hello, tWorld!
read -r <<< "Hello, \tWorld!"printf %s "$REPLY"
Hello, \tWorld!

Secara umum, Anda harus selalu menggunakan read dengan -r pilihan.

Mengubah Pembatas #

Perilaku default read adalah untuk membagi baris menjadi kata-kata menggunakan satu atau lebih spasi, tab, dan baris baru sebagai pembatas. Untuk menggunakan karakter lain sebagai pembatas, tetapkan ke IFS variabel (Pemisah Bidang Internal).

echo "Linux:is:awesome." | (IFS=":" read -r var1 var2 var3; echo -e "$var1 \n$var2 \n$var3")
Linux 
is 
awesome.

Ketika IFS diatur ke karakter selain spasi atau tab, kata-kata dipisahkan oleh tepat satu karakter:

echo "Linux::is:awesome." | \  (IFS=":" read -r var1 var2 var3 var4; echo -e "Var1: $var1 \nVar2: $var2 \nVar3: $var3 \nVar4: $var4")

Garis dipisahkan dalam empat kata. Kata kedua adalah nilai kosong yang mewakili segmen di antara pembatas. Itu dibuat karena kami menggunakan dua karakter pembatas di samping satu sama lain (:: ).

Var1: Linux 
Var2:  
Var3: is 
Var4: awesome.

Anda dapat menggunakan lebih dari satu pembatas untuk membagi garis. Saat menentukan beberapa pembatas, tetapkan karakter ke IFS variabel tanpa spasi di antaranya.

Berikut adalah contoh menggunakan _ sebuah - sebagai pembatas:

echo 'Linux_is-awesome.' | (IFS="-_" read -r var1 var2 var3; echo -e "$var1 \n$var2 \n$var3")
Linux 
is 
awesome.

String Prompt #

Saat menulis skrip bash interaktif, Anda dapat menggunakan read perintah untuk mendapatkan input pengguna.

Untuk menentukan string prompt, gunakan -p pilihan. Prompt dicetak sebelum read dijalankan dan tidak menyertakan baris baru.

Berikut ini contoh sederhananya:

read -r -p "Are you sure?"

Umumnya, Anda akan menggunakan read perintah di dalam while loop untuk memaksa pengguna memberikan salah satu jawaban yang diharapkan.

Kode di bawah ini akan meminta pengguna untuk reboot sistem:

while true; do
    read -r -p "Do you wish to reboot the system? (Y/N): " answer
    case $answer in
        [Yy]* ) reboot; break;;
        [Nn]* ) exit;;
        * ) echo "Please answer Y or N.";;
    esac
done

Jika skrip shell meminta pengguna untuk memasukkan informasi sensitif, seperti kata sandi, gunakan -s opsi yang memberi tahu read untuk tidak mencetak input pada terminal:

read -r -s -p "Enter your password: "

Menetapkan Kata ke Array #

Untuk menetapkan kata ke array, bukan nama variabel, aktifkan read perintah dengan -a pilihan:

read -r -a MY_ARR <<< "Linux is awesome."

for i in "${MY_ARR[@]}"; do 
  echo "$i"
done
Linux 
is 
awesome.

Ketika sebuah array dan nama variabel diberikan, semua kata ditetapkan ke dalam array.

Kesimpulan #

read perintah digunakan untuk membagi baris input menjadi kata-kata.


Linux
  1. Perintah "eval" Di Bash?

  2. perintah ekspor bash

  3. bash sh - perintah tidak ditemukan

  1. Skrip Bash - Contoh Halo Dunia

  2. memulai apachectl dari bash

  3. Bash - Perintah tanggal dan spasi

  1. Perintah Bash trap Dijelaskan

  2. Jalankan perintah bash pada pipa jenkins

  3. Bash jika dalam satu baris