我想使用linux bash格式化字符串:
"<username>{0}</username><password>{1}</password>".format("user", "pass")
输出:
<username>user</username><password>pass</password>
执行此操作的正确命令是什么?我可以使用任何其他通配符代替{0}
和{1}
答案 0 :(得分:4)
来自printf --help
:
-v var 。将输出分配给外壳变量VAR,而不是将其显示在标准输出上
所以,您需要做的只是:
FMT='<username>%s</username><password>%s</password>'
printf -v VAR "$FMT" user pass
答案 1 :(得分:3)
尝试这种parameter expansion:
TMPL="<username>\$U</username><password>\$P</password>"
REALNAME="Bobby"
REALPASS="Lamepass"
TMPL=${TMPL/\$U/${REALNAME}}
TMPL=${TMPL/\$P/${REALPASS}}
echo $TMPL
答案 2 :(得分:1)
您使用的语法似乎是python。除了安全性方面,您可以直接调用python:
var='"<username>{0}</username><password>{1}</password>".format("user", "pass")'
python3 -c "print($var)"
打印
<username>user</username><password>pass</password>