Я пытаюсь использовать printf для форматирования довольно симпатичного вывода в скрипте bash
например:
-----------------------
| This is some output |
-----------------------
Но я наткнулся на какое-то поведение, которое я не понимаю.
$ printf "--"
дает мне ошибку printf: usage: printf [-v var] format [arguments]
и
$ printf "-stuff"
приводит к-bash: printf: -s: invalid option
Так что, очевидно, printf думает, что я пытаюсь передать некоторые аргументы, а я нет.
Между тем, совершенно случайно, я нашел этот обходной путь:
$ printf -- "--- this works now ----\n"
дает мне--- this works now ----
Кто-нибудь может объяснить это поведение?
echo
, которые потерпят неудачу при выполнении echo ------------
? Большинство из них только поддерживают -n
(без завершающего символа новой строки), -e
(интерпретируют символы с обратной косой чертой) и возможны -E
(НЕ интерпретируют их) и не выдают ошибку при обнаружении других аргументов, подобных опции, верно? (РЕДАКТИРОВАТЬ: GNU /bin/echo
также поддерживает --help
и --version
.)