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
ベストアンサー1
read
戻りコード(null以外の有効な入力を受け取ると0)は使用できず、その出力は使用できません(read
何も印刷されません)。ただし、whileループの条件付き部分に複数のコマンドを入れることができます。 whileループの条件は、必要に応じて複雑にすることができます。
while IFS= 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
(入力がある場合、またはファイル終了条件が検出された場合はループを終了します。)