为什么我的脚本不在一行上打印输出?
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
);所以您在此处显示的脚本部分并没有任何错误。
如果变量是基于外部命令创建的(更新:) 或通过 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}";
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
);所以您在此处显示的脚本部分并没有任何错误。
如果变量是基于外部命令创建的(更新:) 或通过 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}";