ANDまたはORのいくつかの基本についての助けが必要です。

ANDまたはORのいくつかの基本についての助けが必要です。

私が戸惑うようないくつかの質問があります。これは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 selectionY、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

おすすめ記事