Bash 格式化字符串。用值替换占位符。

Bash format string. Substitute placeholders with values.

我想使用 linux bash:

格式化字符串
"<username>{0}</username><password>{1}</password>".format("user", "pass")

输出:

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

执行此操作的正确命令是什么?我可以使用任何其他通配符代替 {0}{1}

来自printf --help

-v var    assign the output to shell variable VAR rather than display it on the standard output

所以,您需要做的只是:

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

试试这种 parameter expansion:

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

TMPL=${TMPL/$U/${REALNAME}}
TMPL=${TMPL/$P/${REALPASS}}
echo $TMPL

您使用的语法似乎是 python。除了安全方面,您可以直接调用 python:

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

打印

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