我想将函数参数传递给 zshemulate
来评估 bash 模拟中的命令:
$ .bash() { emulate bash -c "$*" }
$ .bash 'source /path/to/script.sh'
没关系,但我希望它不带引号,如预命令修饰符(使用语法突出显示、完成等),如下所示
$ .bash source /path/to/script.sh
当命令行包含带引号的空格时就会出现问题:
$ .bash source /path/to/"script with spaces".sh
$ # I want it to expand to
$ emulate bash -c 'source /path/to/"script with spaces".sh'
$ # or the like
我尝试使用不同的引号和${(qq)*}
扩展标志。到目前为止还没有好的结果。
有什么办法可以实现这一点吗?
答案1
您可能会取得一些成功
.bash() { emulate bash -c "$(echo ${(qq)@})" }