尝试将另一台服务器的 .xml 文件读入变量
test=$(ssh root@server "cat /dir/file.xml")
但是在执行时echo $test
,它会以单行格式打印.xml 文件。
然后尝试执行xmllint
此文件,
xmllint $test
并在每个标签上出现以下错误。
警告:无法加载外部实体“...”
注意:执行相同的过程时,但在本地 .xml 文件(没有ssh
)上,它可以正常工作并获得预期的结果。
有什么办法可以解决这个问题吗?或者使用xmllint
远程工具?
答案1
请注意,您的$test
变量包含内容xml 文件,而不是其路径。
无论如何,为了显示它保持空格完整,请引用变量:echo "$test"
。
要运行从变量获取输入的程序,您可以使用 stdin 重定向,在本例中它将是:
echo "$test" | xmllint -
您还可以避免使用变量:
ssh root@server "cat /dir/file.xml" | xmllint -
最后,在 bash 中,您还可以使用进程替换(参见man bash
):
xmllint <(ssh root@server "cat /dir/file.xml")