如何在bash printf的格式字符串中包含短划线?

时间:2018-05-17 12:20:14

标签: bash printf

我正在尝试按照the examples here使用printf在bash中连接字符串:

$ printf "%s " "hello printf" "in" "bash script"

以上作品。但是当我尝试向格式字符串添加一些破折号(-):

$ printf "--file=%s " "hello printf" "in" "bash script"

它会产生错误:

  

sh:printf: - :无效选项

显然,它将格式字符串视为一种选择。如何在输出中包含短划线-

(我试图添加使用\-来逃避破折号,但无济于事。)

1 个答案:

答案 0 :(得分:1)

使用涉及--的字符串时,始终指定命令行标志的结尾。通常,shell命令需要知道它们的位置参数从哪里开始。因此,通过在--之后强制printf,我们让它知道后续参数将被解释为其参数。此时,使用--之后将按字面处理,而不是被视为命令行开关。

所以将printf定义为

printf -- "--file=%s " "hello printf" "in" "bash script"

此外,如果您计划指定多个printf参数字符串,请不要将它们包含在相同的格式说明符中。你可能需要这个

printf -- "--file=%s %s %s" "hello printf" "in" "bash script"

详情请见The printf command in bash