0

スーパーユーザーでのこの回答に続いて、私はその関数を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: ]]
  • 580:eval'PATH = $ PATH:/ home / subway / land'

私は何が間違っているのですか?

4

1 に答える 1

1

"\$$1"は $PATH の内容ではなく、 に評価され$PATHます。変数の間接化を使用します。

[[ ":${!1}:" != *":$2:" ]]
于 2013-01-07T13:54:38.067 に答える