“在shellscript中的xmllint xmlpath命令中动态传递变量值”

时间:2019-10-03 06:20:02

标签: shell

我想在下面的语句中传递变量$sname的值

sname="xyz"
snames_arry=$(xmllint --xpath 
'(//source[@name="$sname"]/files/file_names/text())' source.xml)

,但未采用$source_name的值。 错误是XPath集为空,因为它无法解析$source_name的值。 硬编码$sname的值是可行的,但我想使其动态。 有人可以帮我解决上述问题吗?

感谢与问候

2 个答案:

答案 0 :(得分:0)

shell不会对单引号中的字符串执行变量替换。考虑使用双引号

sname="xyz"
snames_arry=$(xmllint --xpath  "(//source[@name="$sname"]/files/file_names/text())" source.xml)

答案 1 :(得分:0)

在单引号之间没有替代。
单引号可以像这样停止和启动

# examples
    echo 'Hel'lo 'world'
    echo '($LOGIN, $USER)=("'$LOGIN'", "'$USER'").'

在您的情况下:

snames_arry=$(xmllint --xpath 
'(//source[@name="'$sname'"]/files/file_names/text())' source.xml)