Bash
printf 中的破折號
我正在嘗試使用 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' '-----------------------'