我正在尝试执行以下命令,用从shell脚本传递的值替换SQL中的变量,但每次我收到与
相同的错误sed:命令乱码
argv[0]
请你帮帮我吧。 提前谢谢。
答案 0 :(得分:0)
我已按以下方式调整了您的sed命令:
sed -e "s/\${BATCH_ID}/${BATCH_ID}/g; s/\${LOAD_DATE}/TO_DATE(${LOAD_DATE},'YYYY-MM-DD')/g" ${sqlFile} >> ${SQL_DIR}/fmv_media_premise_ucg_update_temp.sql
它将用BATCH_ID变量中包含的值替换所有出现的$ {BATCH_ID},并将所有$ {LOAD_DATE}更改为TO_DATE(LOAD_DATE中包含的值,'YYYY-MM-DD'),我希望这有助于您!干杯
您要将sed命令的输出附加到fmv_media_premise_ucg_update_temp.sql文件,您确定不应该完全替换它吗?如果是这种情况,只需使用>而不是>>
答案 1 :(得分:0)
你有envsubst
吗?这将为您提供
envsubst < "${sqlFile}"
这比
更好source <(echo "echo \"$(< ${sqlfile})\"")
最后一个会扩展更多的东西。