Не удалось загрузить удаленный XML-файл из переменной

387
igor

Попытка прочитать XML-файл с другого сервера в переменную

test=$(ssh root@server "cat /dir/file.xml") 

Но при этом echo $testон печатает XML-файл в однострочном формате.

Затем пытается выполнить xmllintна этом файле,

xmllint $test 

и получить следующую ошибку для каждого тега.

предупреждение: не удалось загрузить внешнюю сущность "..."

Примечание: при выполнении той же процедуры, но в локальном XML-файле (без ssh), он работает и получает ожидаемый результат.

Любой способ решить это? Или использовать xmllintинструмент удаленно?

0

1 ответ на вопрос

2
Antonio Ospite

Обратите внимание, что ваша $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")