我想将现有变量的值分配给新变量。 问题是,一旦新变量被分配给现有变量的值,它就不会返回任何值,而不是返回现有变量值。
VAR1="Hello World"
VAR2="Let's concatenate"
VAR1+="$MyVar" # assigning to a new variable
echo "$VAR1"
echo "$MyVar" # This is the issue --> no value returned (intention is to return "Hello World")
此命令的输出(回显“$MyVar”)是:
+ VAR1=
+ echo ''
您没有定义名为
MyVar
的新变量。您正在将不存在的变量扩展产生的空字符串附加到 VAR1
的值。
你想要
MyVar=$VAR1
得到想要的结果。
+=
做什么的示例:
$ x=foo
$ echo "$x"
foo
$ x+=bar
$ echo "$x"
foobar
我使用 @chepner 答案从 .env 文件创建 archlinux 环境变量(PATH)。这是我的 bash working 代码。 文件:~/.bashrc
FROMENV=''
while IFS="=" read -r key value; do
case "$key" in
'#'*) ;;
*)
echo "Key: $key"
echo "Value: $value"
FROMENV+=":$value"
esac
done < .env
echo "$FROMENV"
PATH=$PATH$FROMENV
检查完后,将echo注释掉即可。
# echo "$FROMENV"
供参考我的 .env 文件(都在同一目录中)
NODEJS=/opt/node-v22.11.0-linux-x64/bin
GO=/home/sud/go/bin
PNPM=/home/sud/.local/share/pnpm