bash array[@] 语法详解

最近我写的 bash 脚本中需要遍历数组,用到了 bash 中的 array[@] 这种语法。

在 Bash shell 脚本中,array[@] 是一种特殊的数组引用语法,它有以下几个重要特点:

基本含义

  • array[@] 表示引用数组 array 的所有元素

  • @ 是一个特殊的下标,表示"数组中的所有元素"

  • array[@]array[*] 都表示数组的所有元素

  • 关键区别在于它们在引号中的展开方式:

  • "${array[@]}":每个元素保持独立,即使包含空格也会被正确处理

  • "${array[*]}":所有元素合并为一个字符串,用第一个字符的 IFS(内部字段分隔符)连接

使用示例

fruits=("apple" "banana" "cherry")

# 打印所有元素
echo "${fruits[@]}" # 输出:apple banana cherry

# 在引号中使用
for fruit in "${fruits[@]}"; do
echo "$fruit"
done
# 输出:
# apple
# banana
# cherry

带空格的元素处理

当数组元素包含空格时,"${array[@]}" 能正确处理:

files=("file 1.txt" "file 2.txt")

# 正确方式 - 每个元素保持独立
for file in "${files[@]}"; do
echo "$file"
done
# 输出:
# file 1.txt
# file 2.txt

# 错误方式 - 空格会导致元素被拆分
for file in ${files[@]}; do
echo "$file"
done
# 输出:
# file
# 1.txt
# file
# 2.txt

for ... in 介绍

你可能注意到了,这里面用到了 for ... in 这种循环结构。

介绍数组遍历怎么少的了 for ... in 呢

Bash 中的 for...in 循环是一种常用的循环结构,用于遍历一组值或列表中的元素。

for ... in 基本语法

for variable in list
do
commands
done

或者写在一行:

for variable in list; do commands; done

for ... in 使用示例

  1. 遍历固定列表
for i in 1 2 3 4 5
do
echo "Number: $i"
done
  1. 遍历字符串列表
for color in red green blue
do
echo "Color: $color"
done
  1. 使用通配符遍历文件
for file in *.txt
do
echo "Text file: $file"
done
  1. 使用命令输出作为列表
for user in $(cat /etc/passwd | cut -d: -f1)
do
echo "User: $user"
done
  1. 使用范围表达式
for i in {1..5}
do
echo "Number: $i"
done
  1. 带步长的范围表达式
for i in {1..10..2}
do
echo "Odd number: $i"
done

for ... in 特殊用法

  • 遍历位置参数
for arg in "$@"
do
echo "Argument: $arg"
done
  • 遍历数组
arr=("apple" "banana" "cherry")
for fruit in "${arr[@]}"
do
echo "Fruit: $fruit"
done

for ... in 注意事项

  1. list 中的元素默认以空格分隔
  2. 如果元素包含空格,应该用引号括起来
  3. dodone 是必须的关键字
  4. 循环变量不需要提前声明

本文来自 https://imhuchao.com/2840.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值