ユーザー入力が「stringA」または「stringB」などであることを確認し、これらの文字列のいずれかと同じ場合は、ユーザー入力を印刷する必要があるスクリプトをbashに書きたいと思います。私のコードは次のとおりです
#!/bin/bash
echo "Please enter your choice (stringA or stringB): "
read result
while [[ (${result,,} != 'stringa') || (${result,,} != 'stringb') ]]; do
echo Please enter only stringA or stringB:
read result
done
echo "You have selected $result!"
exit
残念ながら、このコードは機能せず無限に繰り返されます。 whileループの2番目の部分を削除する文字列の1つと同じ場合にのみ比較できます$result
。交換しよう||
としましたが、次のエラーが発生します。||
-o
./chk.sh: line 12: syntax error in conditional expression
./chk.sh: line 12: syntax error near `-o'
./chk.sh: line 12: `while [[ (${result,,} != 'stringa') -o (${result,,} != 'stringb') ]]; do'
ベストアンサー1
を使いたいからです&&
。||
結果がstringAでもstringBでもない場合は、ループを繰り返す必要があります。どちらの文字列も両方と同じではないため、ループは終了します。
以下でパターンを使用することもできます[[ ... ]]
。
while [[ ${result,,} != string[ab] ]]