我正在尝试使用 printf 在 bash 脚本中格式化一些漂亮的输出
例如:
-----------------------
| This is some output |
-----------------------
Run Code Online (Sandbox Code Playgroud)
但我偶然发现了一些我不明白的行为。
$ printf "--"
Run Code Online (Sandbox Code Playgroud)
给我错误:
printf: 用法: printf [-v var] 格式 [参数]
和
$ printf "-stuff"
Run Code Online (Sandbox Code Playgroud)
结果是
-bash: printf: -s: 无效选项
所以显然 printf 认为我试图传递一些参数,而我不是。
同时,完全出于偶然,我找到了这个解决方法:
-----------------------
| This is some output |
-----------------------
Run Code Online (Sandbox Code Playgroud)
给我
--- this works now ----
Run Code Online (Sandbox Code Playgroud)
谁能解释这种行为?
sr_*_*sr_ 64
本--
是用来告诉程序,无论下面应该没有被解释为命令行选项来printf
。
因此,printf "--"
您尝试的结果基本上是“printf
没有参数”,因此失败了。
Chr*_*own 37
--
被解释为一个选项(在这种情况下,表示没有更多选项)。
使用时应始终包含格式字符串printf
以防止错误解释。对于您的特定情况:
printf '%s\n' '-----------------------'
Run Code Online (Sandbox Code Playgroud)
小智 9
printf 内置和 /usr/bin/printf 之间存在差异,第二个执行“您的意思”而没有这些烦人的错误。
printf "-----" # error
printf -- "-----" # ok
/usr/bin/printf "-----" # ok
/usr/bin/printf -- "-----" # ok
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
32676 次 |
最近记录: |