Я пытаюсь написать функцию 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 }». Если бы .. то .. fi конструкция больше не понадобилась. – AsymLabs