Как я могу использовать переменные в качестве входных данных для команды проверки 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"
Удалите недопустимый аргумент -v
, и ваша команда будет правильно синтаксически обработана:
$ xmlstarlet val - <<<"$XML"
- - valid
Кстати, обратите внимание, что обычно мы просим, чтобы ваши вопросы содержали конкретное сообщение об ошибке (или, иначе, описание фактического поведения), избегая фразы «не работает». (Если бы это сработало, вас бы здесь не было; что вместо этого он делает? Выход с ошибкой? Какая ошибка? Немедленный возврат к подсказке без вывода? Если да, то с каким статусом выхода? И т. д.).