xml
имеет неправильный формат. У вас есть преждевременный конец данных в списке тегов1. В конце должно быть
. xmllint
. echo 'cat // список1 / список2 [@ id = "abc"] / @ значение' | xmllint --shell myxml | awk -F '[= "]' '! /> / {print $ (NF-1)}'
будет работать, если вы исправите xml
, как указано в пункте 1, и убедитесь, что у вас есть файл myxml
в вашем текущем рабочем каталоге (или используйте абсолютные пути), хотя это неправильный способ делать что-то. Код:
myvar='abc'
myxml='myxml'
myvalue="cat //list1/list2[@id=\"'$myvar'\"]/@value | xmllint --shell $myxml"
sh -c "echo $myvalue | gawk -F'[=\"]' '!/>/{print \$(NF-1)}'"
Это то, что вы пытаетесь сделать?