bash中的printf“-1”因未知原因而出错

时间:2016-12-25 09:16:38

标签: bash printf

在bash 3.2中(默认情况下在最近的macOS上),运行printf "-1"会给我一些错误:

bash: printf: -1: invalid option

我在zsh中没有问题,实际上,传递给printf的任何字符串中的前导连字符都会触发该错误。 shellcheck没有对此发出警告。还试过echo "-1",看起来很好。

我知道使用printf "%s" "-1"可以避免错误,但有人可以解释其背后的原因吗?感谢。

1 个答案:

答案 0 :(得分:2)

对于符合标准语法(echo是一个值得注意的例外)的实用程序,以-开头的前导操作数表示选项。操作数被视为选项,即使命令不提供这些名称的选项,也会导致您看到的错误消息。可以使用--指示选项的显式结尾:printf -- -1将导致字符串-1被解释为格式字符串并打印。