我正在研究一个包含大量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
.
如何引用传入的字符串$@
?
Zsh有一个特殊选项(不是bash)${(q)}
::
tcsh -c "${(j. .)${(q)@}}"
Run Code Online (Sandbox Code Playgroud)
.First(${(q)@}
)转义$@
具有特殊含义的数组项中的所有字符,second(${(j. .)…}
)将数组连接成一个字符串.