Bashスクリプトで、パラメータにブール値(「true」または「false」)があることを確認したいと思います。
私はこれを2つのスクリプト、2つの異なる方法で試していますが、どちらも失敗します。
私は多くのStack Exchangeプロンプトをチェックし、それが私がしなければならないことをやっていると思いますが、そうではありません。
if [ "$2" != "true" ] -a [ "$2" != "false" ]; then
echo "Indiquez si Geoserver est en installation initiale (false) ou update (true)" >&2;
exit 1;
fi
メッセージで失敗Geoserver.sh: 12: [: true: unexpected operator
if [[ "$3" != "true" && "$3" != "false" ]]; then
echo "Indiquez si Kafka est en installation initiale (false) ou update (true)" >&2;
exit 1;
fi
失敗したKafka.sh: 18: [[: not found
ベストアンサー1
標準的なアプローチは
[ "$3" != "true" ] && [ "$3" != "false" ]
つまり、2つの[
コマンドが実行され、各コマンドはテストを実行し、&&
シェルの演算子に関連付けられます。
[[...]]
機能豊富な多くのシェルでサポートされているkshの特殊な非標準シェル構文で、通常は&&
括弧をサポートしています。として構築されていないbash
限りbash
利用可能でなければなりません--disable-cond-command
が、エラーメッセージのフレーズによると、シェルを使用することをお勧めしますdash
。bash
を使用してビルドすると、エラー--disable-cond-command
はとGeoserver.sh: 12: [: too many arguments
ですKafka.sh: 18: [[: command not found
。
-a
[
以前のバージョンとの互換性のためにサポートされていますが、使用されなくなり、[ "$2" != "true" -a "$2" != "false" ]
設計上破損しています(-o
相手と同様)。または)を使用しないでください。
これは複雑です。