使用 "source" 命令获取变量给出意外输出

Using "source" command to fetch variables giving unexpected output

我正在设置一个使用来自另一个脚本的变量的脚本。

脚本 1 有变量

脚本 2 源脚本 1 并输出意外错误。

通过 GCP 安装全新的 Debian 9。

1.sh

1="test"
2="test2"
3="test3"

2.sh

source 1.sh
echo 
echo 
echo 

运行2.sh,我预计:

test
test2
test3

但是我收到了:

1.sh: line 2: 1=test: command not found
1.sh: line 3: 2=test2: command not found
1.sh: line 4: 3=test3: command not found
#empty line#
#empty line#
#empty line#

This link 告诉我这就是 bash 变量的声明方式。

如何解决这个问题?

123 不是有效的变量名。 </code> 等用于访问传递给脚本的参数,但它们不能像普通变量一样被分配给。尝试使用类似 <code>var1="test" 等的东西。

此外,我建议在 2.sh 的开头添加一个 shebang 行(例如 #!/bin/bash#!/usr/bin/env bash)。 1.sh 无关紧要,因为 source 编写脚本不会注意 shebang 行。

哦,我忘了另一件事:当你使用变量(或参数,或其他)时,你几乎应该总是在它周围放置 double-quotes(例如使用 echo "$var1" 而不是 echo $var1).当您使用不带 double-quotes 的变量时,shell 将尝试以更可能导致麻烦而非帮助的方式解析它。

最后:尤其是刚开始时,请尝试将您的脚本粘贴到 shellcheck.net -- 它可以很好地发现常见的脚本错误,并且可以在它们变成坏习惯之前指出它们。