【问题标题】:Calling and passing variables values between shell scripts [duplicate]在 shell 脚本之间调用和传递变量值 [重复]
【发布时间】:2019-09-12 17:16:40
【问题描述】:
OS: Ubuntu 18.04
Bash

我正在尝试让一个 shell 脚本将变量传递给另一个脚本并执行它。这是我尝试过的:

ma​​inscript.sh

#!/bin/bash
# Master script
SUBSCRIPT1_PATH=~/subscript1.sh
test_string="The cat ate the canary"
(exec "$SUBSCRIPT1_PATH")

subscript1.sh:

#!/bin/bash
# subscript1.sh
echo $test_string

但是,当我这样做时:

bash mainscript.sh

我什么也得不到。关于如何做到这一点的任何想法?

【问题讨论】:

  • (exec "$SUBSCRIPT1_PATH") 等价于"$SUBSCRIPT1_PATH"
  • 顺便说一句,exec 语句周围不需要括号。
  • 使用source 命令或export

标签: bash ubuntu


【解决方案1】:

默认情况下,Shell 变量在子进程中不可见。要将它们传递给孩子,请使用 export 关键字:

#!/bin/bash
# Master script
SUBSCRIPT1_PATH=~/subscript1.sh
export test_string="The cat ate the canary"
(exec "$SUBSCRIPT1_PATH")

【讨论】: