将变量传递给字符串ksh

时间:2014-10-29 22:14:14

标签: bash unix 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'

1 个答案:

答案 0 :(得分:2)

_是shell变量中的合法字符。 shell试图通过名称$rqstID_PRCSS_TBL找到变量并获取一个空字符串。 (这就是_PRCSS_TBL从输出中消失的原因。)

您需要告诉shell变量名称的结束位置:schema.SEGN_${rqstID}_PRCSS_TBL