2009-11-11 127 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

相關問題