私が戸惑うようないくつかの質問があります。これはBashの論理に従うようです。
if [ "$argument" = "Y" -o "$argument" = "YES" ];
then
…
fi
この文を2回使用せずに作成する方法はありますか"$argument"
?はい、わかったように3〜4個の回答を追加するにはどうすればこれを拡張できますか?
第二に、
while [ "$argument" != "Y" ] || [ "$argument" != "YES" ] || [ "$argument" != "N" ] || [ "$argument" != "NO" ]; do
echo "Not a valid selection"
done
ここで何が間違っているのかわかりませんが、どの文を入力しても$argument
常にNot a valid selection
Y、YES、N、またはNOを許可しないというメッセージが表示されます。
ベストアンサー1
あなたの例では、常に答えが無効であるとマークされています。これは、あなたが書いたロジックが動作する実際の例がないためです。その価値が何であれ、そう$argument
するでしょう。いつもY
は、またはと同じではありませんYES
。あたかもこの値の一つのようにできない他人になってください。
次の内容を確認してくださいcase
。
valid=0
while [[ valid -eq 0 ]]; do
read -p 'Really? > ' argument
case "$argument" in
Y*|y*)
valid=1
: handle 'yes' cases
;;
N*|n*)
valid=1
: handle 'no' cases
;;
*)
printf 'Invalid input "%s". Please say "yes" or "no".\n' "$argument" 1>&2
;;
esac
done