2015-07-02 21 views
0

我想讓我的腳本更通用,因此試圖傳遞參數。 我有配置文件,其中包含變量(在腳本中使用)和腳本中,我正在源(源命令)在另一個腳本(ksh)中的文件。shell腳本拋出錯誤的雙參數

配置文件包含:

p2020_m23_ORACLE_USERNAME=sanjeeb 

參數爲腳本p2020_m23

的ksh腳本:

export SOURCE_CD=$1 
export CONFIG_FILE=/user/spanda20/dbconfig.txt 
source $CONFIG_FILE 

USERNAME=${${SOURCE_CD}_ORACLE_USERNAME} << **This throws error** >> 
USERNAME=$p2020_m23_ORACLE_USERNAME <<< **This gives correct result** >> 

手動測試:

[spanda2 config]$ export SOURCE_CD=p2020_m23 
[spanda2 config]$ export m23_ORACLE_USERNAME=sanjeeb 
[spanda2 config]$ export USERNAME=${${SOURCE_CD}_ORACLE_USERNAME} 
-bash: USERNAME=${${SOURCE_CD}_ORACLE_USERNAME}: bad substitution 
+0

請參閱[Bash常見問題解答006](http://mywiki.wooledge.org/BashFAQ/006)(它也會介紹ksh)。 –

回答

0
USERNAME_REF="${SOURCE_CD}_ORACLE_USERNAME" 
USERNAME="${!USERNAME_REF}" 
+0

[spanda20job] $出口SOURCE_CD = p2020_m23 [spanda20工作] $出口p2020_m23_ORACLE_USERNAME = sanjeeb [spanda20工作] $ USERNAME_REF = 「$ {SOURCE_CD} _ORACLE_USERNAME」 [spanda20job] $ USERNAME = 「$ {!USERNAME_REF}」 [ spanda20工作] $ echo $ USERNAME sanjeeb – user3858193

0

${parameter}如果要追加2個變量的值,並賦值參數的-The值取代 如此其他。你應該寫在這樣

export SOURCE_CD=p2020_m23 
    export m23_ORACLE_USERNAME=sanjeeb 
    export USERNAME="${SOURCE_CD}_${ORACLE_USERNAME}" 
0

KSH中您可以使用變量間接與typeset -nnameref

簡單的例子:

$ typeset -n that 
    $ this=word 
    $ that=this 
    $ echo $that 
    word 
    $ this=nothing 
    $ echo $that 
    nothing 

名稱現在參考使得$that回報$this當前值。