我的代码有问题..。
这样做很好:
xmlstarlet ed --inplace -u '//data[irc="Blablabla"]/usercount' -v $count myfile.xml但事实并非如此:
variable="Blablabla"
xmlstarlet ed --inplace -u '//data[irc="$variable"]/usercount' -v $count myfile.xml用户计数不改变值,我也不知道为什么:
发布于 2016-06-07 20:19:48
便宜,容易,错误的方法就是改变你的报价类型:
variable="Blablabla"
xmlstarlet ed --inplace \
-u "//data[irc=\"$variable\"]/usercount" \
-v "$count" \
myfile.xml...that的意思是,将-u 'foo'中的单引号更改为双引号,就像在-u "foo"中一样。
最佳实践是将shell变量作为XPath变量传入,然后在查询中使用它:
variable="Blablabla"
xmlstarlet ed --inplace \
--var variable "'$variable'" \
-u '//data[irc=$variable]/usercount' \
-v "$count" \
myfile.xml这避免了代码和数据的混合--这是几乎所有各种注入漏洞的根本原因。
https://stackoverflow.com/questions/37688413
复制相似问题