xmlstarlet更新值没有任何反应

use*_*620 4 xml bash xmlstarlet

我有一个xml文件

<?xml version="1.0"?>
<preferences>
    <!--General options-->
    <options>
            <dbHost>localhost</dbHost>
            <dbUser>bwserver</dbUser>
            <dbPass>bwserver</dbPass>
            <dbPort>3306</dbPort>
Run Code Online (Sandbox Code Playgroud)

我如何更新值dbUser?

当我输入

xmlstarlet edit --update '/preferences/options/dbUser/'  --value 123 preferences.xml
Run Code Online (Sandbox Code Playgroud)

什么都没发生.我只看到终端中的文件内容.没有触及xml文件.

jas*_*sso 8

你有两个错误:

  1. 您的XPath表达式无效.删除尾部斜杠,使其变为/preferences/options/dbUser
  2. 默认情况下,xmlstarlet不会更改输入文件,而是在stdout中输出结果.您可以通过将输出重定向到输入文件(或任何其他文件)来将原始文件替换为xmlstarlet输出,xmlstarlet edit --update '/preferences/options/dbUser' --value 123 preferences.xml > preferences.xml也可以使用全局选项--inplace将输入文件替换为输出(而不是将其打印到stdin).命令是xmlstarlet edit --inplace --update '/preferences/options/dbUser' --value 123 preferences.xml

键入xmlstarlet edit --help更多信息