Xml 在linux上运行进程的shell脚本

Xml 在linux上运行进程的shell脚本,xml,linux,shell,command-line,process,Xml,Linux,Shell,Command Line,Process,问题: 我对shell脚本非常陌生。我有两个目录A和B,每个目录包含大约100个文件。文件夹A和B中的文件具有完全相同的名称,但内容不同,因为它们是来自不同服务器的xml响应。 我有一个xmldiff实用程序,它将查找这些文件中的差异,并为这些差异生成另一个文件result.xml,它使用以下命令: xmldiff A/file1.xml B/file1.xml Result/result1.xml 所以,我需要一个shell脚本,它将在文件夹a和B上循环,从每个文件夹中选择filename

问题: 我对shell脚本非常陌生。我有两个目录A和B,每个目录包含大约100个文件。文件夹A和B中的文件具有完全相同的名称,但内容不同,因为它们是来自不同服务器的xml响应。 我有一个xmldiff实用程序,它将查找这些文件中的差异,并为这些差异生成另一个文件result.xml,它使用以下命令:

 xmldiff A/file1.xml B/file1.xml Result/result1.xml
所以,我需要一个shell脚本,它将在文件夹a和B上循环,从每个文件夹中选择filename1, 将其传递给xmldiff并获取result.xml…(对于所有100个文件)


注意:将其复制到新的文本文件中。然后从cmdline类型:chmod+x yourfilename。从同一文件夹执行:./yourfilename

如果A和B中的文件具有相同的名称,则快速脏解决方案

(cd A;find . -name \*xml -print0) | xargs -0 -n1 -I % echo xmldiff ./{A,B,Result}/"%"

尝试第一次干运行-如果满意,请删除回声。

假设文件名完全相同,简单的解决方案可能是

A=absolute path for A
B=absolute path for B
Result=absolute path for Result

for filename in `ls A\`
do
  xmldiff A/${filename} B/${filename} Result/${filename}_Result.xml
done

这可以用于给定的用途。

你可以考虑在你的文件名和路径周围放置双引号,以防它们包含空格,例如“$A/${FielnNe}.xml”。你可能会发现在开始时CD“$A”更容易,并且从那里工作,而不是从其他地方循环超过$A/*。谢谢,确实如此。小心目录和文件名中的空格。一般来说,如果可以的话,可以在*nix中避免空格…我使用的是ksh,由于某种原因,“local”关键字不起作用。我得到以下错误:-ksh:local:notfound[没有这样的文件或目录]删除“local”或替换为typeset。看见
A=absolute path for A
B=absolute path for B
Result=absolute path for Result

for filename in `ls A\`
do
  xmldiff A/${filename} B/${filename} Result/${filename}_Result.xml
done