Ниже приведен однострочник Python, который я хочу запустить как часть моего скрипта bash.
python -c "from xml.dom.minidom import parse;dom = parse('/path/to/pom.xml');print [n.firstChild.data for n in dom.childNodes[0].childNodes if n.firstChild and n.tagName == 'version']"
(pom.xml - XML-файл POM maven)
Я хочу, чтобы результат команды был назначен переменной MVN_VER
Это мой базовый скрипт:
WS="/path/to"
PY_GET_MVN_VERS="from xml.dom.minidom import parse;dom = parse(\'${WS}/pom.xml\')\;print [n.firstChild.data for n in dom.childNodes[0].childNodes if n.firstChild and n.tagName == \'version\']"
funcion test_mvn {
MVN_VER=`python -c \"${PY_GET_MVN_VERS}\"`
echo ${MVN_VERS}
}
test_mvn
Однако он не запускается. Если я запускаю скрипт с опцией +x, это то, что я вижу:
++ python -c '"from' xml.dom.minidom import 'parse;dom' = 'parse(\'\''/path/to/pom.xml\'\'')\;print' '[n.firstChild.data' for n in 'dom.childNodes[0].childNodes' if n.firstChild and n.tagName == '\'\''version\'\'']"'
File "<string>", line 1
"from
Я думаю, что это как-то связано с выходом из кода Python. Как я могу избежать этого правильно?