Bash
如何將使用者輸入用作while循環條件
我可以在 bash 中做到這一點:
while read -n1 -r -p "choose [y]es|[n]o" do if [[ $REPLY == q ]]; then break; else #whatever fi done
哪個有效但似乎有點多餘,我可以做這樣的事情嗎?
while [[ `read -n1 -r -p "choose [y]es|[n]o"` != q ]] do #whatever done
您不能使用的返回碼
read
(如果它獲得有效的非空輸入,則為零),也不能使用它的輸出(read
不列印任何內容)。但是您可以將多個命令放在 while 循環的條件部分。while 循環的條件可以是任意複雜的命令。while read -n1 -r -p "choose [y]es|[n]o" && [[ $REPLY != q ]]; do case $REPLY in y) echo "Yes";; n) echo "No";; *) echo "What?";; esac done
(如果輸入是
q
或檢測到文件結束條件,則退出循環。)