2015-12-28 216 views
1

我就遇到了這個語法無法讀取bash腳本

export ts=${2:-`date "+%s"`} 

我知道export${2}。我甚至明白+%s

它是什麼意思後面加上:-

使用Google搜索這些符號是毫無用處的。你在哪裏查找這樣的東西?

+0

您可以查看[bash手冊](http://www.gnu.org/software/bash/manual/bash.html#Shell-Parameter-Expansion)或執行方便的shell命令man bash。在後一種情況下,你可以使用'/'命令搜索一個字符串,所以一旦'man bash'正在執行,輸入'/: - '就可以直接回答你的問題。我知道在你的實際計算機上閱讀文檔是過時的,因爲我們對世界範圍內的網絡有一些無禮的印象,但它仍然有它的位置。 – rici

回答

2

破折號導致擴展成爲變量的值,如果它被定義的話,或者如果該變量沒有被定義,那麼擴展是跟隨的。

實施例:

AA=aa 
echo ${AA:-11} 
echo ${BB:-22} 

時會產生輸出:

aa 
22 

由於AA定義和BB不是。

+0

您可以在[手冊頁](http://linux.die.net/man/1/bash)上搜索':-'來查找文檔 – jpaugh

2

這意味着「如果第二命令行參數沒有被傳遞給程序,使用以下值」:

`date "+%s"` 

它被稱爲「參數替換」,並記載here

+0

請注意,OP沒有反標記。 – Ziffusion

+1

@擴散我猜他有。這只是一個格式問題。反引號被解釋爲SO語法highliter中的代碼部分。 –

+0

啊...很有道理 – Ziffusion