0

ユーザーからの入力を読み取り、ユーザーの入力が予想と一致しない場合は質問を継続的にループする非常に単純なスクリプトを実行しようとしています。

bash経由で実行されています:

echo "Specify a directory [Y/N]?"

read ans
while [ [ "$ans" != "Y" ] || [ "$ans" != "y" ] || [ "$ans" != "N" ] || [ "$ans" != "n" ] ]
do
    echo "$ans is not valid, please answer [Y/N]"
    read ans
done

コードは続きます....

なぜこれが機能しないのですか?かなり単純なループのようです。

4

1 に答える 1

1

それはうまくいくはずです:

echo "Specify a directory [Y/N]?" 
read ans 
while [ "$ans" != "Y" ] && [ "$ans" != "y" ] && [ "$ans" != "N" ] && [ "$ans" != "n" ]
do
    echo "$ans is not valid, please answer [Y/N]"
    read ans 
done

いくつかの間違いがありました:

  • あなたはおそらくORではなくANDを考えていたでしょう
  • [ ]多条件の while ループにグローバルはありません
于 2013-04-01T17:45:21.243 に答える