0

次のkornスクリプトがあります:

#!/bin/ksh

TAPPDATADIR=/hp/qa02/App/IPHSLDI/Data

echo $TAPPDATADIR

if [[ls $TAPPDATADIR/zip_file_MD5_checksum*.txt | wc -l > 1]]
then
    exit "asdf"
fi

実行しようとすると、次のようになります。

/hp/qa02/App/IPHSLDI/Data
./iftest.ksh: line 7: [[ls: not found

if ステートメントが機能しないのはなぜですか?

Data ディレクトリに複数のチェックサム ファイルがあるかどうかを確認しようとしています。ある場合は、スクリプトを終了します。

4

1 に答える 1

6

いくつかの問題があります:

  1. =割り当ての前後にスペースがあってはなりません。

  2. ステートメントの前後[[にスペースが必要です。]]if

  3. コマンドの結果をテスト式に代入するには、バッククォートまたは$(...).

  4. パラメータexitは数値でなければなりません。文字列をエコーし​​たいだけだと思います。

  5. >は文字列比較-gtを実行します。数値比較を実行するには を使用する必要があります。

したがって、完全なスクリプトは次のようになります。

#!/bin/ksh

TAPPDATADIR=/hp/qa02/App/IPHSLDI/Data

echo $TAPPDATADIR

if [[ $(ls $TAPPDATADIR/zip_file_MD5_checksum*.txt | wc -l) -gt 1 ]]
then
    echo "asdf"
fi
于 2012-11-14T20:17:44.190 に答える