将参数从一个脚本传递到另一个脚本

将参数从一个脚本传递到另一个脚本

假设我正在使用 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 位置参数

注意:分配$1file变量是不必要的,你也可以简单地写source "$1",但我这样写是为了展示如何处理位置参数

答案2

如果您想要传递的变量不是太多,那么将它们设置在调用下标的行上是合理的:

sed -i 's/ = /=/' "$file"
source "$file"

variable1=$variable1 variable2=$variable2 /path/to/another/script.sh

相关内容