我怎样才能在bash中添加一个测试,检查一个给定的目录(比如/usr/local/bin
)是否已经在一个变量中,比如说$PATH
,然后再实际执行呢?
上下文:我正在为script创建package I maintain,我希望包含安装依赖项的所有步骤。这涉及更改$PATH
变量,但我的问题更为一般(例如,更改也涉及$PYTHONPATH
)。但是,我也希望不与现有的变量混在一起,如果它已经存在,也不要加前置。
答案 0 :(得分: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
答案 1 :(得分: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
- &gt;完全匹配-q
- &gt;安静,只返回退出状态