私はこれを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
の場合、またはファイルの終わり条件が検出された場合にループを終了します。)