2016-01-20 67 views
-2

我想得到一年中的一天,然後減去一天,然後減三天。它是一個用於在crontab中運行我的腳本的開關。操縱今年的某一天

if (((date(%j) -1) %3)) 
echo 'hello' 
exit() 
else 
echo hi 
fi 

這只是爲了測試它的工作,但我得到

./getdate.sh: line 4: syntax error near unexpected token `fi' 
./getdate.sh: line 4: `fi' 

這可能是微不足道的一些你,但我還是很新的抨擊。

感謝

+1

如果該腳本是打算成爲Bash,那麼該腳本存在一些問題。你有沒有試過http://www.shellcheck.net? – Biffen

+0

@Biffen我甚至不知道這是一個網站,我會去看看。 – twseewx

+0

還要注意'date +%j'(我假定你的意思是)打印前導零,Bash會認爲它是一個八進制數。 – Biffen

回答

2

這裏就是我想你的意思做:

#!/bin/bash 

if ((($(date +%-j) - 1) % 3)) 
then 
    echo 'hello' 
    exit 
fi 

echo hi 
  • 始終使用家當。

  • 執行date並使用它打印的內容將其包裝在$()中。

  • 命令的參數,在這種情況下date,只需按照命令(和空格);沒有括號。

  • date想要+作爲格式的前綴。

  • %j將打印前導零,Bash意思是數字是八進制。使用%-j不能獲得這樣的零。

  • 我想你要在之前減去模數:使用括號進行排序。

  • if需要一個then

  • exit不應該有括號。

  • exit之後不需要else