为什么导出不能从 bash 脚本工作



为什么不导出以下情况下工作的变量:

在下面的示例中,我导出了参数变量,并将睡眠设置为1000秒,以便在后台运行脚本。

#!/bin/bash
export PARAM="I AM A REAL VALUE"
sleep 1000

因此,我将脚本执行为以下过程:

 /tmp/example.bash &

现在脚本作为一个过程运行(我使用ps -ef检查),并且从Linux控制台进行检查,我想将$PARAM打印为以下

 echo $PARAM

,但没有来自param变量的值。

为什么?脚本流程运行时,脚本中的export不会导出值。

运行/tmp/example.bash &时,您将环境设置在子壳中,但这不会影响运行它的父壳。

您需要(a)删除sleep 1000和(b)使用.命令或(在bash或a c shell中) source命令作为当前过程的一部分读取文件:

sed -i.bak '/sleep/d' /tmp/example.bash  # GNU or BSD sed
. /tmp/example.bash
echo $PARAM

相关内容

  • 没有找到相关文章

最新更新