使用“源”命令获取变量以提供意外输出

时间:2019-05-19 23:39:35

标签: php bash debian

我正在设置一个脚本,该脚本使用另一个脚本中的变量。

脚本1具有变量

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

通过GCP新安装的Debian 9。

1.sh

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

2.sh

source 1.sh
echo $1
echo $2
echo $3

我正在运行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变量的声明方式。

如何解决此问题?

1 个答案:

答案 0 :(得分:2)

123不是有效的变量名。 $1等用于访问传递给脚本的参数,但不能将它们分配为普通变量。尝试使用类似var1="test"之类的东西。

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

哦,我忘了另一件事:当您使用变量(或参数等)时,几乎应该始终在其周围加上双引号(例如,使用echo "$var1"而不是仅使用echo $var1 )。当您使用不带双引号的变量时,shell将尝试以更可能引起麻烦而不是帮助的方式解析它。

最后:特别是当您刚入门时,请尝试将脚本粘贴到shellcheck.net中-可以很好地发现常见的脚本错误,并可以在它们成为不良习惯之前指出来。