我正在尝试按照the examples here使用printf
在bash中连接字符串:
$ printf "%s " "hello printf" "in" "bash script"
以上作品。但是当我尝试向格式字符串添加一些破折号(-
):
$ printf "--file=%s " "hello printf" "in" "bash script"
它会产生错误:
sh:printf: - :无效选项
显然,它将格式字符串视为一种选择。如何在输出中包含短划线-
?
(我试图添加使用\-
来逃避破折号,但无济于事。)
答案 0 :(得分:1)
使用涉及--
的字符串时,始终指定命令行标志的结尾。通常,shell命令需要知道它们的位置参数从哪里开始。因此,通过在--
之后强制printf
,我们让它知道后续参数将被解释为其参数。此时,使用--
之后将按字面处理,而不是被视为命令行开关。
所以将printf
定义为
printf -- "--file=%s " "hello printf" "in" "bash script"
此外,如果您计划指定多个printf
参数字符串,请不要将它们包含在相同的格式说明符中。你可能需要这个
printf -- "--file=%s %s %s" "hello printf" "in" "bash script"