这是我所拥有的:
script_1.sh
echo "HELLO FROM script_1.sh"
./scripts/script_2.sh
echo $MY_VARIABLE
脚本2。上海
echo "HELLO FROM script_2.sh"
export MY_VARIABLE="MY_VALUE"
下面是我运行script_1时记录的内容。上海:
HELLO FROM script_1.sh
HELLO FROM script_2.sh
"" // EMPTY LINE INSTEAD OF "MY_VALUE"
我做错了什么?
环境变量沿调用链向下继承。它们不会返回给来电者。
换句话说:被调用的脚本可能会继承调用方的变量。但是调用者不会获得被调用脚本的变量。
在您的简单示例中,最简单的解决方案是“源代码脚本”
. ./scripts/script_2.sh
(点是源脚本的命令)
采购不是呼叫链中的新步骤。相反,sourcer和sourcee共享同一个环境。有关执行和采购区别的更多解释,请参阅此处:https://superuser.com/questions/176783/what-is-the-difference-between-executing-a-bash-script-vs-sourcing-it/176788#176788
还有其他选择,但它们更复杂,更容易出错。您似乎开始学习shell脚本。因此,了解采购和执行的区别,以及目前对环境的影响。如果你以后需要其他选择,那么回来问另一个问题。
变量从父对象导出到子对象,反之亦然<代码>脚本2。sh在另一个shell中调用,该shell的环境不会传播回父shell。
源代码脚本(使用)在同一shell中调用它。然后,您甚至不需要导出值。
. ./scripts/script_2.sh
问题内容: 如何将变量从一个文件导入到另一个文件? 示例:具有变量以及如何将其传递给? 如何将 所有 变量从一个导入到另一个? 问题答案: 将导入file1中的所有对象和方法
如何将变量从一个文件导入到另一个文件? 示例:具有变量和如何将它们传递到? 如何将所有变量从一个导入到另一个?
问题内容: 我的iOS应用程序中有2个数据库文件: 原始数据库(只读,保存在我的应用程序的主目录中) 用户的数据库(保存在用户的文件夹中) 我需要运行一个SQL查询,以从原始数据库复制到用户的数据库,例如: 是否可以通过iOS上运行的SQLite做到这一点?问题是两个数据库位于不同的文件夹中。我想避免在代码(C#)中完成这项工作,这是显而易见的方式,但速度要慢得多。 我的应用程序是用C#/ Mon
如何将一个文本文件复制到另一个文本文件中?我试过这个: 这只是在中留下以下值:。 我做错了什么?
问题内容: 我想将某些文本行从一个文本文件复制到另一个文件。在我当前的脚本中,当我搜索字符串时,它会随后复制所有内容,如何只复制文本的特定部分?例如,仅在其中包含“ tests / file / myword”的情况下才复制行? 当前代码: 问题答案: 单线: 推荐搭配: 使用更少的内存:
我们正在努力从Maven迁移到Gradle。不幸的是,我们还有几个战争复盖物要处理。