Строка формата Bash.Замените заполнители значениями. - PullRequest
0 голосов
/ 18 октября 2018

Я бы хотел отформатировать строку, используя linux bash:

"<username>{0}</username><password>{1}</password>".format("user", "pass")

Вывод:

<username>user</username><password>pass</password>

Какая команда подходит для этого?Я могу использовать любой другой шаблон вместо {0} и {1}

Ответы [ 3 ]

0 голосов
/ 18 октября 2018

Попробуйте этот тип расширения параметра :

TMPL="<username>\$U</username><password>\$P</password>"
REALNAME="Bobby"
REALPASS="Lamepass"

TMPL=${TMPL/\$U/${REALNAME}}
TMPL=${TMPL/\$P/${REALPASS}}
echo $TMPL
0 голосов
/ 18 октября 2018

Синтаксис, который вы используете, выглядит как python.Помимо аспектов безопасности, вы можете напрямую вызвать python:

var='"<username>{0}</username><password>{1}</password>".format("user", "pass")'
python3 -c "print($var)"

print

<username>user</username><password>pass</password>
0 голосов
/ 18 октября 2018

С printf --help:

-v var назначить вывод переменной оболочки VAR, а не отображать его на стандартном выходе

Итак, вам нужно просто:

FMT='<username>%s</username><password>%s</password>'
printf -v VAR "$FMT" user pass
...