在 printf 中使用破折号

Ken*_*tov 1 bash printf

如何在printf字符串中使用破折号?

x=xxx
printf -v args "-x=%s" "$x"
printf "$var"
Run Code Online (Sandbox Code Playgroud)

但它给出了一个错误:

./tmp.sh: line 2: printf: -x: invalid option
printf: usage: printf [-v var] format [arguments]
Run Code Online (Sandbox Code Playgroud)

我知道这是因为printf解释-x为一种选择,但如何克服它?

printf用来创建一个字符串,该字符串将对应于命令行参数,如-x=xxx -y=yyy -z=zzz. 然后我想调用一个工具

eval $tool args

che*_*ner 7

printf支持传统的选项结束参数--

$ printf -- '-x\n'
-x
Run Code Online (Sandbox Code Playgroud)

  • POSIX 需要 printf 来处理 `--`。 (2认同)
  • @chepner,请参阅 http://pubs.opengroup.org/onlinepubs/9699919799/utilities/V3_chap01.html#tag_17_04。_不接受选项但接受操作数的标准实用程序应将“--”识别为要丢弃的第一个参数_。 (2认同)