如何在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