用于在文件夹中的文件末尾添加标签以防标签丢失的脚本

用于在文件夹中的文件末尾添加标签以防标签丢失的脚本

我正在努力编写一个 shell 脚本。我有一堆 xml 文件,超过 500 个,其中一些没有结束标记。</deliveries>我创建了一个可以工作的 shell 脚本,但只有当我在其中写入文件名时(我想我需要使用循环),有人能帮我看看我是否必须使用 foreach 或任何其他循环吗?我想要的是运行读取并更正文件夹中所有文件的脚本

这是我得到的:

<variable name="_" scope="session">some_Stuff","cause":"object type not supported"}</variable>
<variable name="out" scope="session">null</variable>
</delivery>

这就是我要的:

  <variable name="_" scope="session">some_Stuff","cause":"object type not supported"}</variable>
    <variable name="out" scope="session">null</variable>
    </delivery>
  </deliveries>

这是我正在使用的脚本:

#!/bin/bash
key_1=`awk '{line = $0} END {print line}' /home/tornasol/filename.xml` #here i read last line
key_2="</deliveries>"

if [[ "$key_1" != "$key_2" ]] #here I compare the last line and the string
then 
sed -i -e '$a </deliveries>' /home/tornasol/filename.xml #here i add the string in
fi

答案1

灵感来自这个答案

if ! xmlstarlet sel -Q -t -c "//deliveries" /home/tornasol/filename.xml 2>/dev/null; then
    echo "</deliveries>" >>/home/tornasol/filename.xml
fi

这将检查是否xmlstarlet返回错误,如果是,则将行添加到文件中。缺点是任何错误将导致添加标签。

相关内容