Bash

printf 中的破折號

  • December 3, 2021

我正在嘗試使用 printf 在 bash 腳本中格式化一些漂亮的輸出

例如:

-----------------------  
| This is some output | 
-----------------------

但是我偶然發現了一些我不理解的行為。

$ printf "--"

給我錯誤:

printf:用法:printf

$$ -v var $$格式$$ arguments $$

$ printf "-stuff"

結果是

-bash: printf: -s: 無效選項

所以顯然 printf 認為我正在嘗試傳遞一些論點,而我不是。

同時,完全是偶然的,我發現了這個解決方法:

$ printf -- "--- this works now ----\n"

給我

--- this works now ----

誰能解釋這種行為?

--用於告訴程序後面的任何內容都不解釋為printf.

因此,printf "--"您嘗試的基本上以*“printf沒有參數”*而告終,因此失敗了。

--被解釋為一個選項(在這種情況下,表示沒有更多選項)。

使用時應始終包含格式字元串printf以防止錯誤解釋。對於您的特定情況:

printf '%s\n' '-----------------------'

引用自:https://unix.stackexchange.com/questions/22764