我在bash变量扩展中遇到了一些分词问题.我希望能够在变量中存储一个参数列表并运行它,但任何引用的多字参数都不会评估我对它的期望.
我将用一个例子来解释我的问题.假设我有一个函数decho
可以在它自己的行上打印每个位置参数:
#!/bin/bash -u while [ $# -gt 0 ]; do echo $1 shift done
好的,如果我去,decho a b "c d"
我得到:
[~]$ decho a b "c d" a b c d
这是我期望和想要的.但另一方面,如果我从变量中得到参数列表,我得到这个:
[~]$ args='a b "c d"' [~]$ decho $args a b "c d"
这不是我想要的.我可以去:
[~]$ echo decho $args | bash a b c d
但这似乎有点笨重.有没有更好的办法,使扩张$args
的decho $args
是字拆分我预想的方式吗?
您可以使用:
eval decho $args