我有以下xml结构 input.xml中
<route order="1" xml:base="directory/filename1.xml">
<name>name1</name>
</route>
<route order="2" xml:base="directory/filename2.xml">
<name>name2</name>
</route>
我想作为output.xml
<route order="1" xml:base="directory/filename1.xml" xml:timestamp="2017-08-30_12:00:00">
<name>name1</name>
</route>
<route order="2" xml:base="directory/filename2.xml" xml:timestamp="2017-05-30_12:30:00">
<name>name2</name>
</route>
其中xml:timestamp是日期函数的结果,其中xml:base为输入
date -r directory/filename1.xml +'%Y-%m-%d_%H:%M:%S'
我可以像这样添加xml:timestamp属性
xmlstarlet ed --insert "/route" --type attr -n xml:timestamp -v 2017-08-31 input.xml
但是如何将日期函数的结果传递给-v?
答案 0 :(得分:0)
您可以通过将完整命令放在$()中来引用date命令返回的结果,因此以下内容应该有效:
xmlstarlet ed --insert "/route" --type attr -n xml:timestamp -v "$(date -r directory/filename1.xml +'%Y-%m-%d_%H:%M:%S')" input.xml