Bash - 将现有变量值分配给新变量。新变量值不返回分配的值

问题描述 投票:0回答:2

我想将现有变量的值分配给 Bash 脚本中的新变量。 问题是,一旦将新变量分配给现有变量的值,它就不会返回任何内容,而不是返回现有变量值。 (见下面的代码):

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=
  • 回声''

enter image description here

bash shell variables sh
2个回答
3
投票

您没有定义名为

MyVar
的新变量。您正在将不存在的变量扩展产生的空字符串附加到
VAR1
的值。

你想要

MyVar=$VAR1

得到想要的结果。


+=
做什么的示例:

$ x=foo
$ echo "$x"
foo
$ x+=bar
$ echo "$x"
foobar

0
投票

我使用 @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
© www.soinside.com 2019 - 2024. All rights reserved.