You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Zsh中使用echo命令捕获特殊字符!的问题

Zsh中使用echo命令捕获特殊字符!的问题

这个问题我之前也碰到过!Zsh里的!是历史扩展的特殊字符,哪怕放在双引号里,shell也会尝试解析它,这就是你输入echo "abc1234!"时出现dquote>提示的原因——shell误以为你还没写完历史扩展的内容,而不是引号没闭合。

你之前试的echo "abc1234!""之所以只输出abc1234,是因为双引号里的!依然会被shell处理(它不会被引号完全屏蔽),所以最终输出时!就丢失了。

这里给你几个可行的解决方法:

  • 使用单引号包裹字符串:单引号在Zsh里会完全忽略所有特殊字符,直接原样输出内容。执行这个命令就行:

    echo 'abc1234!'
    

    这样就能完整输出abc1234!了。

  • 给!添加转义符:在双引号里给!加上反斜杠\,让shell把它当成普通字符处理:

    echo "abc1234\!"
    
  • 临时关闭历史扩展功能:如果不想每次都处理特殊字符,可以先执行下面的命令关闭历史扩展:

    setopt NO_BANG_HIST
    

    之后再输入echo "abc1234!"就能正常输出了。要是之后想恢复历史扩展,执行setopt BANG_HIST即可。

备注:内容来源于stack exchange,提问作者nova_rubo

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.23 09:50:33