Cha*_*o92 3 shell scripting shell-script variable
例如。我有 2 个独立的脚本,我想保留它们并单独运行。脚本 1 使用了一个读取函数,要求提供所需的文件名,让我们只说 name1,做它的事情,然后输出带有 name1 的文件。
我需要第二个脚本来利用 name1 作为输入的一部分,以及一个与能够指向 name1 的脚本分开的配置文件 [假设目录是固定的,但文件名是可变的。]
为此,我想我需要一种导出全局变量的方法我现在拥有它的方式如下所示:
read -p "What do you want this file to be called?: " name1
export name1=$name1
Run Code Online (Sandbox Code Playgroud)
运行以下
. script1.sh
Run Code Online (Sandbox Code Playgroud)
进而
echo $name1
Run Code Online (Sandbox Code Playgroud)
产生正确的结果,但是如何复制此行为而不必指定在当前 shell 中使用 . - 假设下一个人只会运行 ./script1.sh 或其他东西,有没有办法全局导出?这样我就可以在配置文件和 script2 中使用变量 $name1。
提前谢谢了。
你真的不能。脚本不能在父 shell 的环境中设置环境变量。
一个解决方案显然是创建第三个脚本,以它们需要运行的特定方式运行另外两个脚本。它将获取第一个脚本,然后运行第二个脚本。
或者,将两个脚本合并为一个脚本。如果您将它们分开以“将事物分开”,那么您可以根据需要对同一个脚本中的函数执行相同的操作。
还,
export name1=$name1
Run Code Online (Sandbox Code Playgroud)
可以缩短为
export name1
Run Code Online (Sandbox Code Playgroud)