【发布时间】:2015-05-12 06:08:37
【问题描述】:
为什么在以下情况下无法导出变量:
在以下示例中,我导出 PARAM 变量并将睡眠时间设置为 1000 秒,以便在后台将脚本作为进程运行。
#!/bin/bash
export PARAM="I AM A REAL VALUE"
sleep 1000
所以我按照以下流程执行脚本:
/tmp/example.bash &
现在脚本作为一个进程运行(我用ps -ef检查了它),我想从Linux控制台打印$PARAM,如下所示
echo $PARAM
但 PARAM 变量没有值。
为什么?脚本进程运行时,脚本中的 export 未导出值。
【问题讨论】:
-
因为您的脚本生成了一个新的子 shell,然后您返回父 shell 并检查变量。
-
您正在 subshell 下运行脚本。 subshell 不能改变父 shell 环境(至少没有任何 hack。)你需要source它。
-
那么从控制台打印变量的方法是什么?或来自其他脚本
-
使用
.命令或(在 Bash 或 C shell 中)source命令来读取文件。 OTOH,您可能不想等待超过 15 分钟才能看到结果;失去sleep 1000。 -
您好,请写下您的答案,以便我为您的解决方案投票
标签: linux bash shell variables export