2014-11-06 104 views
0

如何在bash中添加一個測試,在實際執行之前檢查給定目錄(如/usr/local/bin)是否已經存在於變量中,如$PATH

上下文:我爲package I maintain創建script,爲此我希望包含安裝依賴關係的所有步驟。這涉及到更改$PATH變量,但我的問題是更一般的(例如更改也涉及$PYTHONPATH)。但是,我也希望不要混淆現有變量,並且如果它已經存在,就不要預先考慮它。

+0

可能重複在它](http://stackoverflow.com/questions/1396066/detect-if-users-path-has-a-specific-directory-in-it) – 2014-11-06 08:51:00

+0

如果你看看可能的重複的答案,你會SE e這些是完全不同的(檢測與添加一次)。對於社區而言,看起來相當沒有生產力,只是爲了降低這個問題。 – meduz 2014-11-19 14:29:36

+0

你的問題是關於檢測,而不是關於添加。我把你的問題標記爲重複的,但並沒有降低它的效果。 – 2014-11-19 14:34:23

回答

2

使用grep可以測試

echo "$PATH" | grep -o '/usr/local/bin' 

例子:

var=$(echo $PATH | grep -o '/usr/local/bin') 
if [ -n "$var" ] ; then 
    echo 'already Existe' 
else 
    echo 'Not exists' 
fi 

輸出:

already Existe 
+0

感謝您的回答。它完全符合我的需要! – meduz 2014-11-19 14:31:26

+0

非常歡迎您:)) - – Kalanidhi 2014-11-20 05:12:20

0

您可以檢查這樣的:

使用
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 - >安靜,只是返回退出狀態
的[檢測,如果用戶的路徑有一個特定的目錄
相關問題