2014-10-29 203 views
0

如何將全局變量傳遞給函數內的字符串?將變量傳遞給字符串ksh

我有以下的代碼,在大多數情況下工作:

td_query() { bteq << EOF |grep '^>' |sed -e "s/^>/;/g" 
$(cat $HOME/.tdlogon) 
    DATABASE $schemaName; 
    .set width 10000; 
     .set titledashes off; 
    $1 
.LOGOFF; 
.QUIT; 
.EXIT 
EOF 
} 

rqstID="1357" 

echo $(td_query "select '>'||'UPDATE schema.SEGN_$rqstID_PRCSS_TBL SET POPN_LVL_EXCLN ='||a.CODE_ID||' WHERE ' || b.SQL_FILE_NM ||' AND POPN_LVL_EXCLN IS NULL' 
     FROM SE_POPN_EXCLSN a 
     INNER JOIN SE_CODE_LIB b 
     ON 
     a.CODE_ID = b.CODE_ID;") 

但結果回來:

UPDATE schema.SEGN_ SET POPN_LVL_EXCLN = 1002 WHERE MR_IND = 'Y' 

缺少這樣的:

$rqstID_PRCSS_TBL 

它應該是:

UPDATE schema.SEGN_1357_PRCSS_TBL SET POPN_LVL_EXCLN = 1002 WHERE MR_IND = 'Y' 

回答

2

_是shell變量中的合法字符。 shell試圖通過名稱$rqstID_PRCSS_TBL找到一個變量並獲取一個空字符串。 (這就是爲什麼_PRCSS_TBL從你的輸出消失。)

你需要告訴shell其中變量名結束:schema.SEGN_${rqstID}_PRCSS_TBL

相關問題