Bash Shell消除输出中的换行符

你希望输出中不包含 echo 默认生成的换行符

解决方案

使用 printf,做法很简单,去掉格式化字符串末尾的 \n 即可。

$ printf "%s %s" next prompt
next prompt$

如果是 echo,则使用 -n 选项:

$ echo -n prompt
prompt$

讨论

因为 printf 的格式字符串(第一个参数)末尾并没有换行符,所以命令行提示符($)出现在了 printf 的输出之后。该特性在 shell 脚本中用处更大,你可能希望在形成一整行前由多条语句逐部分输出,或者在读取输入前显示用户提示。

换作 echo 命令,消除换行符的方法有两种。首先,-n 选项能够抑制输出行尾的换行符。另外,echo 命令还可以处理多种具有特殊含义的转义序列(如表示换行符的\n),这些转移序列与 C 语言字符串中的类似。要想使用它们,调用 echo 命令时必须加上 -e 选项。其中一种转义序列是 \C,它并不会输出什么字符,而是禁止在行尾输出换行符。因此,下面是第三种解决方案:

$ echo -e 'hi\c'
hi$

因为 printf 所提供的格式化功能既强大又灵活,而且该命令还是内建的,调用开销非常小(不像在其他 shell 或老版 bash 中,printf 是一个独立的可执行文件),所以本文中的很多示例都采用了 printf。

酷客网相关文章:

赞(0)

评论 抢沙发

评论前必须登录!