如何将bash/zsh参数转发给另一个shell

Eri*_*ric 1 bash quotes zsh

我正在研究一个包含大量tcsh配置脚本的系统,要求我通过tcsh运行大多数程序.我试图通过将此添加到我自己来轻松实现这一目标~/.zshrc:

# run command in tcsh
function t() {
    tcsh -c "$@"
}
Run Code Online (Sandbox Code Playgroud)

这适用于类似的东西t ls,但是失败了t ls -l,这会产生错误Unknown option: `-l' Usage: tcsh ...,并且显然是-l作为参数传递而tcsh不是ls.

如何引用传入的字符串$@

ZyX*_*ZyX 5

Zsh有一个特殊选项(不是bash)${(q)}::

tcsh -c "${(j. .)${(q)@}}"
Run Code Online (Sandbox Code Playgroud)

.First(${(q)@})转义$@具有特殊含义的数组项中的所有字符,second(${(j. .)…})将数组连接成一个字符串.