假设我正在使用 Bash 脚本并正在获取一个文件。在我像这样获取文件后,如何将变量传递给另一个脚本。
sed -i 's/ = /=/' $file
source $file
假设文件包含
variable1=10
variable2=apple
如果我想在另一个脚本中使用这些参数,如何将这些参数传递给另一个脚本,然后在当前的 Bash 脚本中运行该脚本。
答案1
您传递它们的方式与以任何其他方式传递参数的方式几乎相同:
sed -i 's/ = /=/' "$file"
source "$file"
/path/to/another/script.sh "$variable1" "$variable2"
显然使用适当的命令行开关(或者如果适用则不使用)。
如果使用上面的代码, 的值$variable1
将在其他脚本中作为$1
(第一个命令行参数)使用,而 则$variable2
作为 使用$2
。
要在新脚本中保留原始名称,您需要使用位置参数重新分配它们,即:
variable1=$1
variable2=$2
然而,这可能不是最有效的方法,您可能会更好地使用以下建议:
听起来您可能实际上想在第二个脚本而不是第一个脚本中获取文件。在这种情况下,您可能需要执行以下操作:
脚本1.sh:
sed -i 's/ = /=/' "$file"
/path/to/another/script2.sh "$file"
脚本2.sh:
file=$1
source "$file"
printf '%s\n' "$variable1"
printf '%s\n' "$variable2"
相关推荐阅读:3.4.1 位置参数
注意:分配
$1
给file
变量是不必要的,你也可以简单地写source "$1"
,但我这样写是为了展示如何处理位置参数
答案2
如果您想要传递的变量不是太多,那么将它们设置在调用下标的行上是合理的:
sed -i 's/ = /=/' "$file"
source "$file"
variable1=$variable1 variable2=$variable2 /path/to/another/script.sh