Bash使用Heredoc生成SQL时);末尾自动换行问题如何解决?
Bash Heredoc生成SQL出现多余换行问题排查方案
问题原因
你遇到的多余换行是${store}变量本身末尾携带换行符导致的:你在给${store}赋值时(比如通过读取文件、执行grep/awk等命令获取值),没有去掉命令输出默认携带的末尾换行,Heredoc展开变量时会原样输出这个换行,所以原本紧跟在变量后的);就被换到了新行。
验证方法
执行以下命令确认变量是否携带换行:
echo -n "${store}=="
如果输出的==单独出现在新行,即可确认是变量带换行的问题。
修复方案
在变量赋值阶段去掉末尾换行即可,两种常用处理方式:
- 执行命令获取值时直接删除换行:
# 将your_command替换为你实际给store赋值的原命令 store=$(your_command | tr -d '\n')
- 对已有的变量值修剪末尾换行:
store=${store%$'\n'}
修复后重新运行你的Heredoc生成脚本,就能得到你预期的SQL格式。
内容的提问来源于stack exchange,提问作者Javier Salas
相关产品推荐
相关产品推荐

