Как включить тире в строку формата bash printf? - PullRequest
0 голосов
/ 17 мая 2018

Я пытаюсь объединить строки в bash, используя printf, следуя приведенным здесь примерам :

$ printf "%s " "hello printf" "in" "bash script"

Выше работает.Но когда я пытаюсь добавить к строке формата несколько черточек (-):

$ printf "--file=%s " "hello printf" "in" "bash script"

, возникает ошибка:

sh: printf: -: неверный параметр

Очевидно, что строка формата обрабатывается как опция.Как я могу включить тире - в вывод?

(Я пытался добавить использование \-, чтобы избежать тире, но безрезультатно.)

1 Ответ

0 голосов
/ 17 мая 2018

Всегда указывайте флаги конца командной строки при использовании строк, включающих --.В общем, команды оболочки должны знать, с чего начинается их позиционный аргумент.Таким образом, заставляя -- после printf, мы даем ему знать, что последующие аргументы должны интерпретироваться как его аргументы.На этом этапе последующее использование -- будет трактоваться буквально, а не рассматриваться как переключатель командной строки.

, поэтому определите printf как

printf -- "--file=%s " "hello printf" "in" "bash script"

Также, если вы планируетечтобы указать несколько строк аргументов printf, не включайте их в один и тот же спецификатор формата.Вам может понадобиться это

printf -- "--file=%s %s %s" "hello printf" "in" "bash script"

Подробнее о Команда printf в bash

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...