2010-12-17 20 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/[)實際上是一個程序或builtin,它期望表達式就像test(1)一樣。與[的特殊之處在於,它必須包含在結尾]中。

所以調用[,並結合不同的表達可以通過使用從殼&&||運營商:

if [ ${FILEDATE} -gt ${MIN} ] || [ ${FILEDATE} -lt ${MAX} ]; then #...應該只是罰款。

你也可以考慮把變量展開內部""讓即使沒有定義某個變量漂亮行爲;)

另請參見:Unix test

+0

我在哪裏:'if [[$ {FILEDATE} -gt $ {MIN}] || [$ {FILEDATE} -lt $ {MAX}]];那麼'它給了我一個錯誤,說逗號是意外的。 – Aya 2010-12-17 19:32:25

+0

你爲什麼要用'[['在你的命令中? – 2010-12-17 19:34:00

+0

'if [$ {FILEDATE} -gt $ {MIN}] || [$ {FILEDATE} -lt $ {MAX}];然後'給我一個'缺少支架'的錯誤 – Aya 2010-12-17 19:36:06