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

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

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

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

xmllint $test

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

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

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

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

1 ответ1

2

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .