Bash

如何將使用者輸入用作while循環條件

  • September 7, 2015

我可以在 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或檢測到文件結束條件,則退出循環。)

引用自:https://unix.stackexchange.com/questions/228148