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

标签 bash quotes zsh

我在一个有很多 tcsh 配置脚本的系统上工作,要求我通过 tcsh 运行大多数程序。我试图通过将其添加到我的 ~/.zshrc 中来使这对我自己变得容易:

# run command in tcsh
function t() {
    tcsh -c "$@"
}

这适用于 t ls 之类的东西,但对 t ls -l 无效,它会给出错误 Unknown option: `-l' Usage: tcsh ...,并且显然将 -l 作为参数传递给 tcsh,而不是传递给 ls

如何引用 $@ 中传递的字符串?

最佳答案

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

tcsh -c "${(j. .)${(q)@}}"

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

关于bash - 如何将 bash/zsh 参数转发到另一个 shell,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13818669/

相关文章:

ubuntu - Pyenv:没有这样的命令 `version-name'

linux - 如何使用 grep 精确匹配单词

java - 无法运行程序 "bash": Launching failed?

linux - 如何删除 shell bash linux 中的连续空格?

mysql - MySQL 中何时使用单引号、双引号和反引号

php - 单引号内的单引号 PHP

zsh - 是否有可能不使用 zsh 在 tmux 中的 Pane /窗口之间共享历史记录?

python - 循环和子流程中的列表,标准输出

c - Fifo 与客户端/服务器

MySQL加载CSV文件但没有双引号?