首页 > 解决方案 > 为什么“echo -n”命令在 .sh 脚本中不起作用?

问题描述

例如,我在 .sh 文件中编写脚本,并且我想回显短语“字符串”而没有尾随空格/新行,所以我应该echo -n "string"像在 bash 或 zsh 中实现此功能一样使用。但是,当我使用命令在 bash/zsh 中运行 .sh 时,sh.sh 文件只会 print -n string,并包含一个新行。如何在使用echo命令的同时打印不带新行的内容?

标签: bashshellshzsh

解决方案


bashecho命令实现与 POSIX 规范大不相同。当bash运行为sh时,echo其行为更像POSIX 的意图,但您sh也可能不是bash但这样的外壳dash更严格地遵守 POSIX 规范,它不允许任何扩展。POSIX 需要-n像任何其他参数一样对待,需要输出的东西而不是修改echo.

改用printf它,它具有更严格的 POSIX 规范并且更便携。

printf 'string'

推荐阅读