代码之家  ›  专栏  ›  技术社区  ›  thor BabarQB

如何在bash printf的格式字符串中包含破折号?

  •  4
  • thor BabarQB  · 技术社区  · 7 年前

    我正在尝试使用 printf 跟随 the examples here :

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

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

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

    它会生成一个错误:

    sh:printf:--:选项无效

    显然,它将格式字符串视为一个选项。如何包含破折号 - 输入输出?

    (我试图增加用途 \- 以避开破折号,但无济于事。)

    1 回复  |  直到 7 年前
        1
  •  5
  •   Inian    7 年前

    使用涉及以下内容的字符串时,始终指定命令行结束标志 -- 。通常,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