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

能否直接迭代循环头中声明的数组?Bash脚本技术疑问

Bash循环迭代元素的两种方式

你完全可以直接像示例里那样,在for循环的in后面写空格分隔的元素列表来迭代,不需要预先创建数组变量。

直接迭代元素列表

你的示例代码里的(1 2 3 4)其实是多余的括号(Bash里这里的括号不会创建数组,只是把元素作为普通单词列表传递),更简洁的写法是:

for ref in 1 2 3 4
do
  echo $ref
done

这种写法对无空格的简单元素完全适用,循环会逐个处理每个元素。

使用数组变量的场景

如果你的元素包含空格,或者需要在脚本其他地方重复使用这组元素,建议先定义数组,再用[@]语法展开(必须加双引号,避免元素被错误拆分):

# 预先定义数组
refs=(1 "two three" 4)
# 用数组展开迭代
for ref in "${refs[@]}"
do
  echo "$ref"
done

这种写法能正确保留带空格的元素,输出会是:

1
two three
4

总结

  • 简单无空格元素:直接写列表就行,不用数组。
  • 带空格元素或需复用:先定义数组,再用"${数组名[@]}"展开迭代。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.21 12:37:04