#shell #xmlstarlet
#оболочка #xmlstarlet
Вопрос:
Как я могу использовать переменные в качестве входных данных для команды проверки xmlstarlet? Вот полный пример:
read -r -d '' XML <<"EOF"
<?xml version="1.0"?>
<catalog>
<book id="bk101">
<author>Gambardella, Matthew</author>
<title>XML Developer's Guide</title>
<genre>Computer</genre>
<price>44.95</price>
<publish_date>2000-10-01</publish_date>
<description>An in-depth look at creating applications
with XML.</description>
</book>
</catalog>
EOF
# emits a usage message, exits with status 2
xmlstarlet val -v . <<< "$XML"
# also emits a usage message and exits with status 2
xmlstarlet val -v - <<< "$XML"
Комментарии:
1. Кстати, обратите внимание, что обычно мы просим, чтобы ваши вопросы содержали конкретное сообщение об ошибке (или, иначе, описание фактического поведения), избегая фразы «не работает». (Если бы это работало, вас бы здесь не было; что он делает вместо этого? Выход с ошибкой? Какая ошибка? Немедленно вернуться к командной строке без вывода? Если да, то с каким статусом выхода? И т.д.).
Ответ №1:
Удалите недопустимый -v
аргумент, и ваша команда будет проанализирована правильно:
$ xmlstarlet val - <<<"$XML"
- - valid