将变量传递给字符串ksh
问题描述:
如何将全局变量传递给函数内的字符串?将变量传递给字符串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'
答
_
是shell变量中的合法字符。 shell试图通过名称$rqstID_PRCSS_TBL
找到一个变量并获取一个空字符串。 (这就是为什么_PRCSS_TBL
从你的输出消失。)
你需要告诉shell其中变量名结束:schema.SEGN_${rqstID}_PRCSS_TBL