如何用bash中的--
打印双破折号(printf
)?
我尝试了以下方法,但均无济于事:
$ printf "--moish"
$ printf -- "moish"
$ printf "\-\-moish"
$ printf "$-$-moish"
以下是相应的结果(一个错误,然后是其他三个)
bash: printf: --: invalid option
printf: usage: printf [-v var] format [arguments]
然后:
moish
\-\-moish
himBHshimBHsmoish
答案 0 :(得分:1)
使用-在printf之后指定以下参数不是命令开关
在您的情况下使用:
$ printf -- "--monish\n"
--monish
答案 1 :(得分:1)
由于bash
首先评估引号,所以评估的最后一行是
printf --moish
这使错误更加明显。这是bash中的一个常见错误,您的第一个非标志参数以连字符(-
)开头,并且它是否为double无关紧要。据我所知,grep
也经常发生这种情况。这使该工具认为您向其发送了一个标志,而不是参数。
大多数(如果不是全部)工具(因为这是POSIX事物)在这种情况下完全允许使用--
标志-明确地告诉该工具,其后的所有事物都是常规参数,而不是标志:>
printf -- --moish
请注意,引号甚至不是必需的。如果您想要的话,它们会是
printf -- "--moish\n"
防止过早评估“ \ n”。