Saat ini saya sedang menulis skrip shell ketiga saya dan saya mengalami masalah. Ini skrip saya sejauh ini:
#!/bin/bash
echo "choose one of the following options : \
1) display all current users \
2) list all files \
3) show calendar \
4) exit script"
while read
do
case in
1) who;;
2) ls -a;;
3) cal;;
4) exit;;
esac
done
ketika saya mencoba menjalankan skrip dikatakan:
line2 : unexpected EOF while looking for matching '"'
line14 : syntax error: unexpected end of file.
Apa yang saya lakukan salah?
shell
shell-script
Swifty124
sumber
sumber
Jawaban:
Masalahnya adalah, bahwa
case
pernyataan Anda kehilangan subjek - variabel yang harus dievaluasi. Karenanya Anda mungkin menginginkan sesuatu seperti ini:Di sini
case
menggunakan variabel default$REPLY
yangread
mengisi ketika tidak diberi nama variabel apa pun (lihathelp read
detailnya).Perhatikan juga perubahan:
printf
digunakan untuk menampilkan prompt di setiap putaran (dan tidak menambahkan baris baru),cat
digunakan untuk mencetak instruksi pada beberapa baris sehingga tidak membungkus dan lebih mudah dibaca.sumber
Jangan lupa
select
:sumber
Mari kita coba satu kasus pada awalnya. Saya akan gunakan
read -p
untuk membaca input pengguna ke dalam variabelopt
diikuti dengan pernyataan kasus seperti di bawah ini.Script di atas berfungsi dengan baik dan sekarang, saya percaya Anda harus memilikinya dalam satu lingkaran sehingga Anda dapat membaca input pengguna sampai pengguna menekan opsi 4.
Jadi, kita bisa melakukannya dengan
while
loop seperti di bawah ini. Saya mengatur variabelopt
dengan nilai awal sebagai 0. Sekarang, saya mengulangi dalamwhile
loop selamaopt
variabel memiliki nilai 0 (itulah sebabnya saya me-resetopt
variabel sebagai 0 pada akhircase
pernyataan).sumber
Saya pribadi akan meletakkan "sementara" di awal kode. Jika Anda kemudian mengikutinya dengan a
:
, itu akan memungkinkannya untuk berputar sebanyak yang Anda inginkan. Ini adalah bagaimana saya akan menulisnya.kemudian lanjutkan pertanyaan, dan akhiri dengan
sumber