【发布时间】:2012-11-02 15:55:26
【问题描述】:
我在让它工作时遇到问题......
我有一个使用占位符保存 SQL 的变量:
echo $SQL
SELECT PX_PROMOTION_ID, PRIORITY, STATUS, EXCLSVE, TYPE, PERORDLMT, PERSHOPPERLMT, TOTALLMT, RSV_INT, PX_GROUP_ID, CAMPAIGN_ID, STOREENT_ID, VERSION, REVISION, EFFECTIVE, TRANSFER, CDREQUIRED, EXPIRE, LASTUPDATEBY, TO_CHAR(LASTUPDATE, 'YYYYMMDD HH24MMSS') AS LASTUPDATE, TO_CHAR(STARTDATE, 'YYYYMMDD HH24MMSS') AS STARTDATE, TO_CHAR(ENDDATE, 'YYYYMMDD HH24MMSS') AS ENDDATE, TO_CHAR(RSV_TIME, 'YYYYMMDD HH24MMSS') AS RSV_TIME, RSV_REAL, TGTSALES, NAME, CODE, RSV_VCH, OPTCOUNTER FROM PX_PROMOTION WHERE LASTUPDATE BETWEEN (SELECT MAX(BATCHSTART) FROM XRPTEBATCHCONTROL) AND TIMESTAMP('$BATCH_END')
我有另一个变量保存该值:
echo $BATCH_END
2012-11-14 17:06:13
我想用值替换占位符。我不是特别擅长 Unix 脚本,但我试过这个:
echo $SQL | sed -e "s/'$BATCH_END/$BATCH_END/g"
但它仍然没有被替换......
有人可以帮忙吗?我想替换占位符,并保留分配给 $SQL 的最终字符串
我还需要知道如何将输出的值返回到变量中,例如我试过:
SQL=`echo "$SQL" | echo "${SQL//\$BATCH_END/$BATCH_END}"`
【问题讨论】:
-
回声太多。请改用
SQL="${SQL//\$BATCH_END/$BATCH_END}" -
Here 是这个问题的一个更一般的版本,涵盖了所有变量的替换,而无需事先知道变量将被命名。