我正在研究一个包含大量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. .)…})将数组连接成一个字符串.