【发布时间】:2018-06-15 19:35:27
【问题描述】:
我打电话给Uncle。我试图在我调用的第二个 bash 脚本中操作具有硬编码值的变量。我无法控制脚本,并且正在围绕它构建一个包装器,以在它最终启动 yocto 构建之前调整一些构建行为。在阅读并尝试了许多示例之后,我不确定还可以尝试什么。
情况举例:
build.sh 调用 build2.sh
IS_DEV=1 ./build2.sh #trying to override value
build2.sh
IS_DEV=0 # hardcoded value
echo $IS_DEV
# always results in 0.
在致电build2.sh 之前,我也尝试过export IS_DEV=1。
我确信这很简单,但我似乎无法让它工作。我感谢任何帮助。这可能吗?我在Ubuntu 16.04.4 LTS 上使用GNU bash, version 4.3.48(1)-release (x86_64-pc-linux-gnu)。
哦,我也尝试了采购技术,但没有运气。
IS_DEV=1 . ./build2.sh
IS_DEV=1 source ./build2.sh
我哪里弄错了?
非常感谢。
【问题讨论】:
-
这个问题和答案表明你可能不走运,除非你能在第二个脚本stackoverflow.com/questions/4609668/…得到支持
-
@BrandonMiller 是的,我看过那篇文章并尝试了示例,不行。我会看看我是否可以获得调整第二个脚本的能力。谢谢。
-
我总是把你的 build2 写成
: "${IS_DEV:=0}",使 0 明确成为可覆盖的默认值。 (顺便说一句,shell 和 POSIX 实用程序使用全大写变量供自己使用;具有至少一个小写字母的变量的命名空间保留给应用程序使用,并保证不会修改 shell 的行为;请参阅相关规范 @ pubs.opengroup.org/onlinepubs/9699919799/basedefs/…,第四段) -
@CharlesDuffy 我希望我可以直接编辑被调用的脚本并清理它,但我不能。 :(
标签: bash