xmlstarlet更新值没有任何变化
我有一个xml文件xmlstarlet更新值没有任何变化,xml,bash,xmlstarlet,Xml,Bash,Xmlstarlet,我有一个xml文件 <?xml version="1.0"?> <preferences> <!--General options--> <options> <dbHost>localhost</dbHost> <dbUser>bwserver</dbUser> <dbPass>bwserver<
<?xml version="1.0"?>
<preferences>
<!--General options-->
<options>
<dbHost>localhost</dbHost>
<dbUser>bwserver</dbUser>
<dbPass>bwserver</dbPass>
<dbPort>3306</dbPort>
什么也没发生。我只在终端中看到文件内容。未触及xml文件。您有两个错误:
/preferences/options/dbUser
xmlstarlet edit--update'/preferences/options/dbUser'--value 123 preferences.xml>preferences.xml
将原始文件替换为xmlstarlet输出,也可以使用全局选项--inplace
将输入文件替换为输出命令是xmlstarlet edit--inplace--update'/preferences/options/dbUser'--value 123 preferences.xml
键入
xmlstarlet edit--help
了解更多信息在shell脚本中重定向到同一个文件是错误的。对于小文件,您可以不受影响,但是>首选项.xml
本身将创建一个新文件。(我的xmlstarlet没有--inplace全局编辑选项),因此最安全的路径是xmlstarlet….file.xml>tmp_file.xml&&/bin/mv tmp_file.xml file.xml
(用于处理原始文件时需要新要求等的时候),我宁愿保留我的原始文件,并让以下步骤使用新文件,但这当然会使空间使用量加倍,并在某些时候需要额外清理。祝大家好运。
xmlstarlet edit --update '/preferences/options/dbUser/' --value 123 preferences.xml