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

Bash脚本处理命令行参数时引号失效问题求助

解决Bash脚本参数处理的空格拆分问题

啊,这个问题我太熟悉了——你踩中了Bash里**单词拆分(Word Splitting)**的经典陷阱!

问题根源

当你写for i in $@时,Bash会把$@展开成不带引号的参数列表。这时候,任何包含空格的参数(比如你传递的"Arg 1")都会被Bash按照空格拆分成两个独立的元素:Arg和1。虽然$#统计的是你实际传递的原始参数数量(也就是2个),所以它的输出是对的,但循环遍历的是拆分后的单词,导致参数处理出错。

修复方法

给$@加上双引号,让Bash保留每个参数的完整性。修改后的脚本如下:

#! /bin/bash
# Demo bash script
for i in "$@"
do
    echo "$i"
done
echo $# args

这里的关键是"$@"——它会把每个传递的参数都当作一个独立的整体,哪怕参数里包含空格、制表符或者其他特殊字符。另外,给echo里的$i也加上双引号,能避免后续如果参数有其他特殊字符时再出问题。

测试结果

当你执行myscript.sh "Arg 1" "Arg 2"时,输出会变成:

Arg 1
Arg 2
2 args

完全符合你的预期!

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.07 22:03:12