1
我试图编写一个bash函数来初始化一些环境变量。 我想追加一个路径给他们,除非它已经在那里。在函数中通过引用设置环境变量
我这样称呼它
$ add_to_path /home/brucewayne MYENV
这是我到目前为止所。
# adds $1 to path $2 (e.g. add '/opt/blabla' to $PYTHONPATH)
add_to_path() {
if [ -d "$1" ] && [[ ":${!2}:" != *":$1:"* ]]; then
$2="$1:${!2}"
fi
}
但是当我运行它,我得到
./a.sh: line 6: MYENV=/home/brucewayne:/home/pal: No such file or directory
我的猜测是$2="$1:${!2}"
不被解释为分配。 $ 2应该变成MYENV,并且该值应该被设置为MYENV,但是相反,它看起来像我不能通过引用来设置该值。 在bash中这样做的正确方法是什么?
该死的我已经试过了,但有不同的右侧和失败。谢谢!它确实工作 –
不客气,很高兴它解决了。 – anubhava
你可以通过使用:[[-d“$ 1”&&“:$ {!2}:”!= *“:$ 1:”*]] && export $ 2 =“$ 1:$ {!2 }”。 if .. then .. fi结构将不再需要。 – AsymLabs