читать формат printf из bash var - PullRequest
0 голосов
/ 16 декабря 2018

У меня есть bash-скрипт, которым я доволен: *

$ printf '  Number of xml files: %s\n' `find . -name '*.xml' | wc -l`
42
$

, тогда сообщение стало длиннее:

$ printf '  Very long message here about number of xml files: %s\n' `find . -name '*.xml' | wc -l`
42
$

Поэтому я пытаюсь поместить его в переменную MSG, чтобыостаться на 80cols ::

$ MSG='  Number of xml files after zip-zip extraction: %s\n'
$ printf $MSG `find xml_out -name '*.xml' | wc -l`

безуспешно ::

$ printf $MSG `find xml_out -name '*.xml' | wc -l`
Number$
$ 

Ответы [ 2 ]

0 голосов
/ 16 декабря 2018

Вы можете использовать этот способ:

msg='  Number of xml files after zip-zip extraction: %s\n'
printf "$msg" "$(find xml_out -name '*.xml' -exec printf '.' \; | wc -c)"
  • msg следует заключать в кавычки в команде printf.
  • Избегать конвейера с помощью wc -l для решения проблем, когда имя файламожет содержать символы новой строки, пробелы или символы подстановки.
  • Избегать всех переменных в верхнем регистре в оболочке.
0 голосов
/ 16 декабря 2018

вам нужно поместить его в двойную кавычку

printf "$MSG"  `ls | wc -l`
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...