Bash:检查string-substring

时间:2013-01-07 13:49:12

标签: string bash equality

关注this answer in superuser,我在bash中写了这个函数:

_add_env()
{
    export $1
    if [[ ":\$$1:" != *":$2:"* ]]; then
            eval $1="\$$1:$2";
    fi
};  

我这样称呼:_merge_env PATH“/ home / subway / land”

即使PATH包含给定路径,似乎条件为真。

以下是相关的bash -x输出:

  • 579:[[:$ PATH:!= :/ \ h \ o \ m \ e / \ s \ u \ b \ w \ a \ y / \ l \ a \ n \ d:< / em>]]
  • 580:eval'PATH = $ PATH:/ home / subway / land'

我做错了什么?

1 个答案:

答案 0 :(得分:1)

"\$$1"未评估为$ PATH的内容,而是评估为$PATH。使用变量间接:

[[ ":${!1}:" != *":$2:" ]]