代码之家  ›  专栏  ›  技术社区  ›  RudziankoÅ­

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

  •  0
  • RudziankoÅ­  · 技术社区  · 6 年前

    我想使用linux bash格式化字符串:

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

    输出:

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

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

    3 回复  |  直到 6 年前
        1
  •  9
  •   oguz ismail FCulig    6 年前

    printf --help

    -五 将输出赋给shell变量VAR,而不是在标准输出上显示它

    所以,你需要做的只是:

    FMT='<username>%s</username><password>%s</password>'
    printf -v VAR "$FMT" user pass
    
        2
  •  6
  •   Igor S.K.    6 年前

    试试这种 parameter expansion :

    TMPL="<username>\$U</username><password>\$P</password>"
    REALNAME="Bobby"
    REALPASS="Lamepass"
    
    TMPL=${TMPL/\$U/${REALNAME}}
    TMPL=${TMPL/\$P/${REALPASS}}
    echo $TMPL
    
        3
  •  1
  •   Socowi    6 年前

    您使用的语法似乎是python。撇开安全方面不谈,您可以直接调用python:

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

    印刷品

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