在 zsh 中展开引号中的参数

在 zsh 中展开引号中的参数

我想将函数参数传递给 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)@})" } 

相关内容