#!/bin/bash
if [ `date +%u` -lt 6 && `date +%H` == '19' ] ; then
echo 'Sorry, you cannot run this program today.'
else
echo 'yes, you can run today'
fi
上面的腳本是在平日和每7PM運行一個程序。我檢查空格,它仍然返回錯誤:date.sh:2:[:missing]Bash腳本錯誤:[:missing]
#!/bin/bash
if [ `date +%u` -lt 6 && `date +%H` == '19' ] ; then
echo 'Sorry, you cannot run this program today.'
else
echo 'yes, you can run today'
fi
上面的腳本是在平日和每7PM運行一個程序。我檢查空格,它仍然返回錯誤:date.sh:2:[:missing]Bash腳本錯誤:[:missing]
您的代碼有兩個問題。
首先是一個簡單的錯字:date %H
應該是date +%H
。
第二個是你看到的錯誤的原因:&&
不是正確的操作符使用。它分隔命令,而您的if
條件應該是單一的; bash尋找]在[ `date +%u` -lt 6
的末尾,找不到它,並且出錯。您想用-a
代替。
將其更改爲:
#!/bin/bash
if [ `date +%u` -lt 6 ] && [ `date +%H` == '19' ] ; then
echo 'Sorry, you cannot run this program today.'
else
echo 'yes, you can run today'
fi
注意,[
只是爲test
命令和速記]
的最後一個參數吧。 &&
運營商像在任何其他命令行使用,例如cd /home && ls
得到了新的錯誤:date.sh:2:[:11:意外的操作符 – 2013-04-22 03:21:58
我測試了相同的代碼,它工作。你確定你的shell是* bash *嗎?哪個bash版本? – hek2mgl 2013-04-22 03:22:43
sicksand @ awalfathi:〜$ echo $ BASH_VERSION 4.2.25(1)-release – 2013-04-22 03:45:03
我在哪裏把-a命令? – 2013-04-22 03:45:32
用它替換'&&'。 – Cairnarvon 2013-04-22 03:53:35
[code]#!/ bin/bash if ['date +%u' -lt 6 -a'date +%H' =='19'];然後 回聲'對不起,你今天不能運行這個程序。' 其他 回聲「是的,你今天可以運行」 網絡 [/代碼] 回報date.sh:2:13:意外的運營商 – 2013-04-22 05:06:31