我正在设置一个脚本,该脚本使用另一个脚本中的变量。
脚本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变量的声明方式。
如何解决此问题?
答案 0 :(得分:2)
1
,2
和3
不是有效的变量名。 $1
等用于访问传递给脚本的参数,但不能将它们分配为普通变量。尝试使用类似var1="test"
之类的东西。
此外,我建议在2.sh的开头添加一个shebang行(例如#!/bin/bash
或#!/usr/bin/env bash
)。对于1.sh来说,这无关紧要,因为source
编写脚本并不需要注意shebang行。
哦,我忘了另一件事:当您使用变量(或参数等)时,几乎应该始终在其周围加上双引号(例如,使用echo "$var1"
而不是仅使用echo $var1
)。当您使用不带双引号的变量时,shell将尝试以更可能引起麻烦而不是帮助的方式解析它。
最后:特别是当您刚入门时,请尝试将脚本粘贴到shellcheck.net中-可以很好地发现常见的脚本错误,并可以在它们成为不良习惯之前指出来。