2016-01-25 81 views
0

我在這裏讀tcollector init.sh文件:https://github.com/OpenTSDB/tcollector/blob/master/rpm/initd.sh#L25殼牌 - 變量的使用與前圍

什麼破折號在該行25 TCOLLECTOR=${TCOLLECTOR-/usr/local/tcollector/tcollector.py}是什麼意思?

(我本來以爲它只是分配破折號TCOLLECTOR之後的路徑;但是我的測試中表現出兩種不同的結果:

  1. 如果TCOLLECTOR已經分配的值,它會保存該值
  2. 否則TCOLLECTOR將具有值「/usr/local/tcollector/tcollector.py」

我也看了「 - 」的用法,但它都是關於STDIN和STDOUT的......我沒有得到他們如何與我的問題相關的線索。)

謝謝。

回答

0

這是參數擴展的示例;一般POSIX品種記錄here,你可以閱讀關於Bash化身here

基本上,減號擴展確實如您所描述的那樣:${anyVariable-anyExpression}如果已設置則擴展爲$anyVariable的值,但如果未設置,則擴展爲anyExpression

加號完全相反:${anyVariable+anyExpression}如果$anyVariable有一個值,則擴展爲anyExpression;如果未設置,則爲空(空字符串)。

還有其他幾個選項。

+0

謝謝馬克!由於我沒有至少15個聲望,所以我不能對此答案投票......將來會這樣做 –