Jawaban yang bagus, dan pelajaran yang sangat berharga;) Hanya ingin melengkapi dengan catatan.
Jenis tes apa yang dipilih untuk digunakan sangat tergantung pada kode, struktur, lingkungan, dll.
Alternatifnya bisa menggunakan saklar atau case
pernyataan seperti pada:
case "$PHONE_TYPE" in
"NORTEL"|"NEC"|"CISCO")
echo "OK"
;;
*)
echo "Phone type must be nortel,cisco or nec"
;;
esac
Sebagai catatan kedua Anda harus berhati-hati dengan menggunakan nama variabel huruf besar. Ini untuk mencegah tabrakan antar variabel yang diperkenalkan oleh sistem, yang hampir selalu merupakan huruf besar semua. Jadi, $phone_type
bukannya $PHONE_TYPE
.
Meskipun itu aman, jika Anda memiliki kebiasaan menggunakan semua huruf besar, suatu hari Anda mungkin mengatakan IFS="boo"
dan Anda berada di dunia yang terluka.
Ini juga akan membuatnya lebih mudah untuk menemukan yang mana.
Tidak harus tetapi sangat akan mempertimbangkan.
Mungkin juga merupakan kandidat yang baik untuk suatu fungsi. Ini sebagian besar membuat kode lebih mudah dibaca dan dipelihara. Misalnya:
valid_phone_type()
{
case "$1" in
"NORTEL"|"NEC")
return 0;;
*)
echo "Model $1 is not supported"
return 1;;
esac
}
if ! valid_phone_type "$phone_type"; then
echo "Bye."
exit 1
fi
if [[ ! $PHONE_TYPE =~ ^(NORTEL|NEC|CISCO)$ ]]; then