kshで文字列を比較する方法

kshで文字列を比較する方法

ジョブの結果を確認し、アクションを実行したいですFAILED

まず、アプリケーション ログファイル (最近処理されたファイル ( $processedfilename)) の行の最後の単語を grep します。

check1=$(grep "$processedfilename" "$logfile" | grep "anotherword" | \
    grep "FAILED" | tail -1 | awk '{print $NF}')

結果は次のようになります[FAILED]

結果を確認したい

if [ $check1 -eq "[[FAILED]" ] 
then

または

if [ $check1 -eq "\[FAILED]" ] 
then

いつも算術構文エラー

チェックする正しい構文は何ですか[FAILED]?

答え1

変数は常に二重引用符で囲む必要があります。また、=文字列の等号も必要です。つまり、

if [ "$check1" = "[FAILED]" ]; then

答え2

-eqエラーの原因となる を使用して算術比較を行っています。=(または==[[) を使用して文字列比較を行う必要があり、そのためには引用符を使用するだけで十分です。

[ "$check1" = "[[FAILED]" ]
[[ "$check1" = "[[FAILED]" ]]

関連情報