Bash识别字符串中的变量

时间:2015-04-27 15:19:43

标签: xml string bash variables replace

我有一个使用不同数量的参数调用的bash脚本,例如:

sh ./test.sh p1 p2 p3

基本上,脚本在XML-File中查找它应该对这些参数执行的操作,然后执行命令字符串。示例XML文件:

...
<command name='echo'>
  <exec>echo 1st parameter: $p1 2nd parameter: $p2 3rd parameter: $p3</exec>
</command>
...

使用xmlstarlet以这种方式解析XML文件:

command=$(xml sel -t -m "data/command[@name='$1']/exec" -v '.' /usr/share/data.xml)

(假设$ 1是“echo”)

之后,变量command包含echo 1st parameter: $p1 2nd parameter: $2 3rd parameter: $p3。尼斯。但是当我尝试通过在脚本中键入$command来执行该命令字符串时,bash不会将$p1$p2p3替换为相应的值,而是只需打印:

1st parameter: $1 2nd parameter: $2 3rd parameter: $3

由于我不知道涉及多少参数,只需将字符串中任何出现的$ *替换为其值都无法解决。有什么想法吗?

0 个答案:

没有答案