如何在bash中添加一個測試,在實際執行之前檢查給定目錄(如/usr/local/bin
)是否已經存在於變量中,如$PATH
?
上下文:我爲package I maintain創建script,爲此我希望包含安裝依賴關係的所有步驟。這涉及到更改$PATH
變量,但我的問題是更一般的(例如更改也涉及$PYTHONPATH
)。但是,我也希望不要混淆現有變量,並且如果它已經存在,就不要預先考慮它。
如何在bash中添加一個測試,在實際執行之前檢查給定目錄(如/usr/local/bin
)是否已經存在於變量中,如$PATH
?
上下文:我爲package I maintain創建script,爲此我希望包含安裝依賴關係的所有步驟。這涉及到更改$PATH
變量,但我的問題是更一般的(例如更改也涉及$PYTHONPATH
)。但是,我也希望不要混淆現有變量,並且如果它已經存在,就不要預先考慮它。
您可以檢查這樣的:
使用export p='/usr/local/bin'
(IFS=: a=("$PATH"); printf "%s\n" "${a[@]}"|grep -xq "$p") && echo "exists" || echo "nope"
exists
export p='/usr/local/bin123'
(IFS=: a=("$PATH"); printf "%s\n" "${a[@]}"|grep -xq "$p") && echo "exists" || echo "nope"
nope
grep的選項:
-x
- >精確匹配-q
- >安靜,只是返回退出狀態
可能重複在它](http://stackoverflow.com/questions/1396066/detect-if-users-path-has-a-specific-directory-in-it) – 2014-11-06 08:51:00
如果你看看可能的重複的答案,你會SE e這些是完全不同的(檢測與添加一次)。對於社區而言,看起來相當沒有生產力,只是爲了降低這個問題。 – meduz 2014-11-19 14:29:36
你的問題是關於檢測,而不是關於添加。我把你的問題標記爲重複的,但並沒有降低它的效果。 – 2014-11-19 14:34:23