shell 为什么我的脚本不在一行上打印输出?

xjreopfe  于 2022-11-16  发布在  Shell
关注(0)|答案(1)|浏览(251)

This is an image of what I'm asking for我在脚本中使用了以下-echo-,执行后,输出格式如下所示:

`echo -e "UPDATE table1 SET table1_f1='$Fname' ,table1_f2='$Lname' where table1_f3='$id';\ncommit;" >> $OutputFile`

输出:UPDATE table1 SET table1_f1='Fname' ,table1_f2='Lname' where table1_f3='id ';';出现在新的一行中,为什么会发生这种情况?

7gyucuyw

7gyucuyw1#

shell脚本中的变量$id实际上在末尾包含换行符(\n\r\n);因此您在此处显示的脚本部分实际上没有任何错误。
如果变量是基于外部命令(update:)创建的,或者是通过read ing外部文件创建的,这种效果非常常见。
对于简单值,在echo中使用换行符之前,可以先将换行符从值的末尾去掉,方法如下:

id=$( echo "${id}" | tr -s '\r' '' | tr -s '\n' '' );

或者对于已经依赖于特定bash IFS值的脚本:

OLDIFS="${IFS}"; 
IFS=$'\n\t '; 
id=$( echo "${id}" | tr -s '\r' '' | tr -s '\n' '' );
IFS="${OLDIFS}";

相关问题