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

Bash中如何转义分号?含分号命令行参数传递问题

解决命令行参数中包含分号的传递问题

你的脚本里用echo "$@"的写法是没问题的,问题出在命令行调用时的shell解析逻辑——分号;在bash里是命令分隔符,shell会把它当成“结束当前命令,执行下一个命令”的标记,所以你输入的;;; second argument.;根本没被当成参数传给脚本,而是被shell当成了新的(无效)命令。

要让分号作为参数的一部分传递给脚本,有两种常用方法:

  • 用单引号包裹包含特殊字符的内容:
    单引号会让shell完全忽略里面的所有特殊字符,把内容原封不动作为参数传递。比如:

    # 把所有内容作为单个参数
    ./script.sh 'first argument ;;; second argument.;'
    
    # 分成两个参数传递
    ./script.sh 'first argument ;;;' 'second argument.;'
    
  • 用反斜杠转义每个分号:
    在每个分号前加反斜杠\,告诉shell这个分号是普通字符,不要解析它。比如:

    ./script.sh first argument \;\;\; second argument.\;
    

不管用哪种方法,脚本里的echo "$@"都能正确输出所有包含分号的参数,因为双引号包裹的$@会保留每个参数的原始格式(包括空格和特殊字符)。

内容的提问来源于stack exchange,提问作者Evgeny

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.17 17:20:31