将命令存入 var 然后再直接执行 $var 通常都会遇到问题,这种情况下最好借助 eval,这跟其他 scripting languages 如 Perl、Python 等类似
复制内容到剪贴板
代码:
[color=blue]-(dearvoid@LinuxEden:tty3)-(~/tmp)-
[224 0][/color] [color=red]; cmd="echo {a,b}"
[/color][color=blue]-(dearvoid@LinuxEden:tty3)-(~/tmp)-
[224 0][/color] [color=red]; $cmd
[/color]{a,b}
[color=blue]-(dearvoid@LinuxEden:tty3)-(~/tmp)-
[224 0][/color] [color=red]; eval $cmd
[/color]a b
[color=blue]-(dearvoid@LinuxEden:tty3)-(~/tmp)-
[224 0][/color] [color=red]; bash -c "$cmd"
[/color]a b
[color=blue]-(dearvoid@LinuxEden:tty3)-(~/tmp)-
[224 0][/color] [color=red]; echo $cmd | bash
[/color]a b
[color=blue]-(dearvoid@LinuxEden:tty3)-(~/tmp)-
[224 0][/color] [color=red]; o
[/color]具体细节可以参考 info bash 中的 Shell Expansions 一节