2014-11-06 64 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 - >安静,只是返回退出状态
的[检测,如果用户的路径有一个特定的目录
相关问题