【问题标题】:Export variables from one shell script to another将变量从一个 shell 脚本导出到另一个
【发布时间】:2023-10-11 18:41:02
【问题描述】:

我有几个脚本,它们的第一部分看起来相同。这部分的功能是识别脚本在哪台机器上运行并相应地设置几个变量。它看起来像这样:

   ENV=`echo $LOGNAME | cut -c1-8`
if  [ $ENV = "vrt3400b" ]
then
   echo "Using TEST specific settings."
   NAME_PREFIX="tst"
   GROUP_NUMBER=`echo $USER | cut -c4-5`
   GROUP_NUMBER_SUFFIX=00`echo $USER | cut -c8-9`
   ...
elif [ $ENV = "vrp3400a" ]
then
   echo "Using PROD specific settings."
   NAME_PREFIX="prd"
   ...

问题是随着脚本数量的增加,维护小更改的开销变得非常耗时。

我提取了上述部分并将其放入一个单独的脚本中,然后由所有其他脚本调用。但是这些变量当然不会转发给其他脚本。也试过export NAME_PREFIX="tst",但没用。

谁能告诉我应该使用哪种方法来解决问题?

我正在考虑让部件识别环境,将属性写入文件,然后可以将其传递给其他脚本。但似乎必须有更直接的方法。

// 迈克

【问题讨论】:

    标签: shell scripting solaris environment


    【解决方案1】:

    初始化脚本(1.sh)

    a=123
    b=abc
    
    export a b
    

    应用程序脚本

    #!/bin/sh
    
    . 1.sh
    
    echo \$a: $a
    echo \$b: $b
    

    【讨论】:

    • 我使用的是“#!/bin/sh”。但是您的回答使我得出结论,“来源”可以替换为“。”如果没有使用 bash。太好了!
    • 酷!这在 bash 中也有效。我会改变我的答案以反映这一点。
    • 我认为您不一定需要导出变量,除非您希望它们出现在称为“子”的脚本环境中(例如,您的示例中的第二个脚本)。