在 bash 中,如何从脚本内的读取函数导出/设置全局变量,以便稍后在第二个脚本和配置文件中使用?

在 bash 中,如何从脚本内的读取函数导出/设置全局变量,以便稍后在第二个脚本和配置文件中使用?

例如。我有 2 个独立的脚本,我想保留它们并单独运行。脚本 1 使用一个读取函数来请求所需的文件名,让我们直接说出 name1,执行它的操作,并输出 name1 的文件。

我需要第二个脚本来利用 name1 作为输入的一部分,以及一个与能够指向 name1 的脚本分开的配置文件[假设目录是固定的,但文件名是可变的。]

为此,我想我需要一种导出全局变量的方法我现在的方式看起来像这样:

read -p "What do you want this file to be called?: " name1
export name1=$name1

运行以下命令

. script1.sh

进而

echo $name1

产生正确的结果,但如何复制此行为,而不必指定在当前 shell 中使用 . - 假设下一个人会运行 ./script1.sh 或其他东西,有没有办法全局导出?这样我就可以在配置文件和 script2 中使用变量 $name1。

提前谢谢了。

答案1

你真的不能。脚本无法在父 shell 的环境中设置环境变量。

显然,一种解决方案是创建第三个脚本,以需要运行的特定方式运行另外两个脚本。它将获取第一个脚本,然后运行第二个脚本。

或者,将两个脚本合并为一个脚本。如果您将它们分开以“将事物分开”,那么如果您愿意,您可以对同一个脚本中的函数执行相同的操作。

还,

export name1=$name1

可以缩短为

export name1

相关内容