2010-12-17 5 views
0

私は見ている簡単なことがあります。上記のコードは動作しますが、ありませんこれはksh条件

if [ ${FILEDATE} -gt ${MIN} ]; then 
    echo $MAX 
fi 

if [ ${FILEDATE} -gt ${MIN} || ${FILEDATE} -lt ${MAX}]; then 
    echo $MAX 
fi 

いくつかの構文に問題がなければなりませんが、参照が、私は私が持っているものと同一の外観を発見しました。

答えて

0

[は(私のシステムで、それは/usr/bin/[である)、実際にちょうどtest(1)のような表現はありません期待していたプログラムやbuiltinです。 [の特質は、それが閉じる]で包まれなければならないということです。

ので[を呼び出し、別の表現を組み合わせることがシェルから&&||演算子を使用することにより可能である:

if [ ${FILEDATE} -gt ${MIN} ] || [ ${FILEDATE} -lt ${MAX} ]; then #...だけで正常に動作する必要があります。あなたはまた、いくつかの変数が定義されていない場合でも、素敵な行動を取得するために""内の変数の展開を置くことを検討するかもしれない

;)

も参照してください:Unix test

+0

ここで私は:[[$ {FILEDATE} -gt $ {MIN}] || [$ {FILEDATE} -lt $ {MAX}]];カンマが予期せぬものであるというエラーが表示されます。 – Aya

+0

あなたのコマンドで '[['を使う理由は? –

+0

'の場合[$ {FILEDATE} -gt $ {MIN}] || [$ {FILEDATE} -lt $ {MAX}]; 'ブラケットがありません'というエラーが表示されます – Aya