Pendahuluan
Bash read
command adalah utilitas bawaan yang membaca teks dari input standar. Alat ini menawarkan banyak fungsi untuk membaca masukan pengguna, membantu membuat skrip Bash menjadi interaktif.
Panduan ini menjelaskan cara Bash read
perintah bekerja melalui berbagai contoh dan kasus penggunaan.
Prasyarat
- Akses ke baris perintah/terminal.
- Dasar-dasar bekerja dengan variabel lingkungan.
Bash membaca Sintaks
Sintaks untuk Bash read
perintahnya adalah:
read <options> <arguments>
read
perintah mengambil input pengguna dan membagi string menjadi beberapa bidang, menetapkan setiap kata baru ke argumen. Jika variabel lebih sedikit daripada kata, read
menyimpan suku-suku yang tersisa ke dalam variabel akhir.
Menentukan nama argumen adalah opsional. Perintah menyimpan input pengguna ke dalam $REPLY
variabel secara default.
Opsi baca Bash
Bash read
perintah dilengkapi dengan banyak opsi untuk mengontrol input pengguna. Beberapa opsi tidak memerlukan parameter tambahan, sementara yang lain memiliki parameter wajib.
Tabel di bawah ini menunjukkan semua opsi perintah yang mungkin dan deskripsinya.
Opsi | Deskripsi |
---|---|
-a <array> | Menetapkan urutan kata yang disediakan ke variabel bernama <array> . |
-d <delimiter> | Membaca satu baris hingga <delimiter> . yang disediakan bukannya baris baru. |
-e | Memulai sesi shell interaktif untuk mendapatkan baris yang akan dibaca. |
-i <prefix> | Menambahkan teks awal sebelum membaca baris sebagai awalan. |
-n <number> | Kembali setelah membaca jumlah karakter yang ditentukan sambil menghormati pembatas untuk mengakhiri lebih awal. |
-N <number> | Kembali setelah membaca jumlah karakter yang ditentukan, mengabaikan pembatas. |
-p <prompt> | Mengeluarkan string prompt sebelum membaca input pengguna. |
-r | Nonaktifkan garis miring terbalik untuk keluar dari karakter. |
-s | Tidak menggemakan input pengguna. |
-t <time> | Waktu perintah habis setelah waktu yang ditentukan dalam hitungan detik. |
-u <file descriptor> | Baca dari deskriptor file alih-alih input standar. |
Lanjutkan membaca untuk melihat cara membaca perintah bekerja melalui berbagai contoh.
Contoh baca Bash
read
fungsi perintah tanpa argumen atau opsi apa pun. Untuk menguji perintah, ikuti langkah-langkah di bawah ini:
1. Buka terminal.
2. Tulis perintah dan tekan Enter :
read
Prompt menunggu input pengguna.
3. Ketik kalimat dan tekan Enter .
Terminal kembali ke keadaan normal.
4. Ambil pesan dengan perintah echo:
echo $REPLY
$REPLY
variabel menyimpan read
pesan perintah.
Di bawah ini adalah contoh yang menunjukkan kasus penggunaan yang lebih kompleks untuk read
. Bash perintah.
Argumen
Simpan input pengguna ke dalam variabel tertentu dengan memberikan argumen:
read input
Ambil pesan dengan:
echo $input
Atau, bagi input pengguna menjadi variabel yang berbeda dengan menambahkan beberapa argumen.
Misalnya:
read var1 var2
Masukan pengguna dibagi menjadi kata-kata individual. Ambil dengan:
echo $var1
echo $var2
Ketika input pengguna memiliki lebih banyak kata daripada variabel, kata-kata tambahan ditugaskan ke variabel yang terakhir disediakan:
read var1 var2
foo bar baz
echo $var1
echo $var2
Jika ada lebih sedikit kata daripada variabel, variabel yang tersisa kosong.
Pemipaan
Piping mengambil output standar dari satu perintah dan mem-parsingnya sebagai input standar untuk proses lain. Gunakan echo
dan menyalurkan informasi ke read
untuk parsing segera. Misalnya:
echo "Hello world!" | (read var1 var2; echo $var1; echo $var2)
Tanda kurung membuat subkulit dengan banyak perintah, dan variabel individual dicetak ke konsol.
Inidok
Cara lain untuk memasukkan teks ke dalam read
perintah menggunakan notasi heredoc. Misalnya:
read var1 var2 <<< "Hello world!"
echo $var1
echo $var2
read
perintah mengharapkan literal aliran input, dan pengidentifikasi pengalihan (<<<
) memasukkan string ini.
Pembatas
read
perintah mendefinisikan dua jenis pembatas:
1. Pembatas untuk read
memerintah.
Secara default, menekan Enter (baris baru) mengakhiri perintah. Tambahkan -d
tag dan berikan pembatas yang berbeda dalam tanda kutip untuk mengakhiri secara berbeda.
Misalnya:
read -d "-"
Alih-alih baris baru, pembatas baru adalah tanda hubung (-
) alih-alih baris baru. Perintah berakhir ketika mencapai pembatas, mengabaikan jumlah argumen. Tanggapan di $REPLY
atau variabel yang disediakan menyimpan input pengguna tanpa tanda hubung (-
).
2. Pembatas untuk memisahkan bidang.
Variabel $IFS
(Pemisah Bidang Internal) menyimpan pembatas kata. Nilai default yang digunakan untuk memisahkan kata adalah spasi " ". Setel $IFS
variabel ke nilai yang berbeda untuk mengontrol perilaku ini.
Misalnya, untuk memisahkan kata dengan tanda hubung, gunakan:
IFS="-"
echo "Hello-world!" | (read var1 var2; echo $var1; echo $var2)
Tambahkan pemisah yang berbeda untuk membagi bidang dengan nilai yang berbeda:
IFS="-_"
echo "Hello_world-!" | (read var1 var2 var3; echo $var1; echo $var2; echo $var3)
Pemisah memiliki panjang satu karakter, dan $IFS
mengambil setiap pembagi yang disebutkan satu per satu.
Cepat
Gunakan perintah baca untuk membuat petunjuk interaktif. Tambahkan -p
tag dan berikan teks prompt, misalnya:
read -p "Enter your username: " username
Teks prompt dicetak dan memerlukan input pengguna. Teks disimpan ke variabel $username
.
echo Your username is $username.
Gunakan -p
opsi dalam skrip Bash untuk bekerja dengan pembuatan cepat.
Sembunyikan Masukan Pengguna
read
perintah menawarkan -s
tag untuk menyembunyikan input informasi sensitif. Kasus penggunaan yang umum adalah menggabungkan -s
dengan -p
tag untuk membuat prompt kata sandi.
Misalnya:
read -p "Enter your password: "$'\n' -s password
Masukan pengguna tidak terlihat. Namun, menggemakan pesan akan menampilkan kata sandi:
echo $password
Berhati-hatilah dengan perilaku ini saat menggunakan read
dalam skrip yang meminta kata sandi.
Tetapkan Batas Karakter
Perintah read menawarkan dua opsi saat membatasi jumlah karakter untuk input pengguna:
1. Gunakan -n
pilihan dan memberikan nomor untuk mengatur batas karakter. Misalnya:
read -n 3
Tekan Enter setelah satu karakter untuk mengakhiri perintah sebelum mencapai batas karakter. Tanpa menekan Enter , perintah keluar secara otomatis setelah tiga karakter.
2. Gunakan -N
opsi dan berikan nomor untuk mengatur batas karakter sambil mengabaikan pembatas. Misalnya:
read -N 3
Menekan Enter tidak mengakhiri perintah. Namun, penekanan tombol dihitung sebagai karakter.
Tetapkan Batas Waktu
Setel batas waktu pada read
untuk membatasi waktu yang dibutuhkan untuk memasukkan teks:
read -t 5
Perintah secara otomatis berakhir setelah batas waktu yang ditentukan.
Array
Daripada menggunakan variabel individual untuk menyimpan string, tambahkan -a
opsi untuk menyimpan input dalam array. Misalnya:
read -a array <<< "Hello world!"
Ambil elemen array dengan:
echo ${array[0]}
echo ${array[1]}
Atau, gunakan perulangan for untuk melakukan iterasi melalui array.
Karakter Lolos dan Garis Miring Balik
read
perintah memungkinkan pemisahan input panjang menjadi beberapa baris menggunakan garis miring terbalik. Misalnya:
read password prompt terminal output
Hello \
world\
!
Menekan Enter setelah garis miring terbalik tidak mengakhiri perintah dan mengharapkan masukan lebih lanjut pada baris berikut.
Untuk mengabaikan interpretasi garis miring terbalik, tambahkan -r pilihan:
read -r <<< "Hello\world!"; echo $REPLY
Gunakan opsi ini saat mengurai jalur file dan teks apa pun yang memiliki arti garis miring terbalik.