2009-11-11 138 views
2

我有几个脚本,其中的第一部分看起来相同。这部分的功能是确定脚本在哪个机器上运行,并相应地设置一些变量。它看起来像这样:将变量从一个shell脚本导出到另一个脚本

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",但它没有奏效。

任何人都可以给我一个提示,我应该使用哪种方法来解决问题?

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

//麦克

+0

壳牌您使用的? – 2009-11-11 10:03:43

回答

6

初始化脚本(1.sh)

a=123 
b=abc 

export a b 

应用脚本

#!/bin/sh 

. 1.sh 

echo \$a: $a 
echo \$b: $b 
+1

我正在使用“#!/ bin/sh”。但是你的回答让我得出这样的结论:“来源”可以用“'替代。如果bash没有被使用。大! – Mike 2009-11-11 11:13:37

+0

酷!这在bash中也是有效的。我会改变我的答案来反映这一点。 – 2009-11-11 11:36:51

+2

我不认为你需要导出这些变量,除非你希望它们出现在称为“子”的脚本环境中(例如你的例子中的第二个脚本)。 – 2009-11-11 14:44:44