質問
以下のシェルスクリプトでテストしています:
#!/bin/ksh -x
instance=`echo $1 | cut -d= -f2`
if [ $instance == "ALL" ]
then
echo "strings matched \n"
fi
IF条件でこのエラーを与えています:
: ==: unknown test operator
は ==
本当に使用する正しい構文ではありませんか?以下のようにコマンドラインで実行しています
test_lsn_2 INSTANCE=ALL
誰かが解決策を提案してください。ありがとう。
解決
KSHを使用していることがわかりますが、Bashをタグとして追加しましたが、Bash関連の答えを受け入れますか? Bashを使用すると、これらの方法でそれを行うことができます:
if [[ "$instance" == "ALL" ]]
if [ "$instance" = "ALL" ]
if [[ "$instance" -eq "ALL" ]]
見る ここ その詳細については。
他のヒント
文字列を比較するには、ダブルではなく、単一=が必要です。文字列が空の場合に備えて、二重引用符で貼る必要があります。
if [ "$instance" = "ALL" ]
then
echo "strings matched \n"
fi
試す
if [ "$instance" = "ALL" ]; then
いくつかの間違いがありました:
変数の周りに二重引用符が必要であるため、それが空であるという(ありそうもない)ケースから保護する必要があります。この場合、シェルが表示されます
if [ = "ALL" ]; then
これは有効ではありません。シェルの等しいものはシングルを使用します
=
(に値を割り当てる方法はありませんif
シェル内)。
totest=$1
case "$totest" in
"ALL" ) echo "ok" ;;
* ) echo "not ok" ;;
esac
私はすでに同様の質問に答えました。基本的に必要なオペレーターはです =
(いいえ ==
)そして、変数が空の場合、構文は壊れます(つまり、 if [ = ALL]
)。見て 他の答え 詳細については。
所属していません StackOverflow