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

Why is my script not printing output on one line?

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 '; '; 出现在新的一行,为什么会这样?

shell 脚本中的变量 $id 实际上在末尾包含换行符(\n\r\n);所以您在此处显示的脚本部分并没有任何错误。

如果变量是基于外部命令创建的(更新:) 或通过 reading 外部文件创建的,那么这种效果很常见。

对于简单值,在 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}";