我有一个使用不同数量的参数调用的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
,$p2
和p3
替换为相应的值,而是只需打印:
1st parameter: $1 2nd parameter: $2 3rd parameter: $3
由于我不知道涉及多少参数,只需将字符串中任何出现的$ *替换为其值都无法解决。有什么想法吗?