2013-01-07 21 views
0

this answer in superuser,我已經寫了函數在bash:擊:檢查串子

_add_env() 
{ 
    export $1 
    if [[ ":\$$1:" != *":$2:"* ]]; then 
      eval $1="\$$1:$2"; 
    fi 
}; 

我打電話這種方式:_merge_env PATH 「的/ home /地鐵/土地」

即使PATH包含給定的路徑,似乎條件也是如此。

下面是相關的bash -x輸出:

  • 579:[[:$ PATH:!= :/ \ħ\ o \米\ E/\ S \Ú\ B \瓦特\一\ Y/\升\ A \ n \ d:]
  • 580:EVAL 'PATH = $ PATH:/家庭/地鐵/土地'

我在做什麼錯?

回答

1

"\$$1"未評估爲$ PATH的內容,而是評估爲$PATH。使用可變間接:

[[ ":${!1}:" != *":$2:" ]] 
+0

它的工作原理!謝謝。你介意解釋什麼是可變間接的意思?我的意思是,它的工作到底是什麼? – Subway

+0

它的工作就是你在這裏嘗試的:使用一個變量的值作爲變量的名字來擴展。 – choroba