2017-07-26 104 views

回答

1

事實上,雖然它確實執行MyScript.sh myConfigFile.ini,它並不像它看起來那麼明顯。

-ls-l -s的簡寫。這些參數能夠在的zsh

  • -l使得選項LOGIN,它告訴的zsh它是一個登錄shell某些選項。這也意味着~/.zprofile/etc/zprofile(或/etc/zsh/zprofile在某些系統)是在初始化和上離開~/.zlogout/etc/zlogout讀取。
  • -s啓用選項SHIN_STDIN。這告訴的zshSTDIN,這也是默認的,如果與-c COMMAND沒有指定命令,並指定腳本讀取命令。明確設置-s還會禁用從命令行獲取腳本。任何通常作爲文件的參數都將被視爲正常的位置參數(也就是說,在啓動的shell會話中,它們將可用於數組[email protected]$*以及標量參數$1,$2)。

所以通常zsh -ls % MyScript.sh myConfigFile.ini將開始一個的zsh登錄shell,參數$1$2$3設置爲%,分別MyScript.shmyConfigFile.ini。它會不是運行MyScript.sh,並且會等待來自STDIN的輸入。

這是一個crontab裏面。這裏%裏面的一個命令具有特殊的含義,除非用\轉義。第一個%之後的所有內容都將作爲標準輸入發送到該命令。任何進一步的%將被換行符替換。

所以在結合的時候cron(或替身)運行此crontab條目

30 05 * * * /bin/zsh -ls % MyScript.sh myConfigFile.ini 

啓動zsh作爲登錄shell,這將等待上STDIN輸入。 cron然後將MyScript.sh myConfigFile.ini作爲STDIN發送到殼。


爲什麼有人做過這樣(而不是隻MyScript.sh myConfigFile.ini或許/path/to/MyScript.sh myConfigFile.ini)是很難說沒有進一步的信息。請注意,MyScript.sh不一定是zsh腳本購買可能真的是任何可執行文件。因此MyScript.sh可能需要在~/.zprofile中設置的環境。