Linux脚本关联,每日一Shell(4) 数组和关联数组

本文详细介绍了Bash shell脚本中数组的使用,包括普通数组和关联数组的定义、打印、删除等操作,以及从文件读取数组、数组切片、连接数组、替换元素和循环遍历等高级用法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、普通数组(索引数组)

基本语法

1. 定义数组:

array_var=(1 2 3 4 5 6)

或者:

array_var=([0]=1 [1]=2 [2]=3 [3]=4 [4]=5 [5]=6)

相当于:

array_var[0]=1

array_var[1]=2

array_var[2]=3

array_var[3]=4

array_var[4]=5

array_var[5]=6

2. 打印数组的内容

echo ${array_var[0]} # 1

index=5

echo ${array_var[$index]} # 6

3. 以清单形式打出所有值

echo ${array_var[*]} # 1 2 3 4 5 6

也可以:

echo ${array_var[@]} # 1 2 3 4 5 6

4. 打印数组长度

echo ${#array_var[*]} # 6

5. 删除数组

跟删除变量是一样的:

unset a

二、关联数组

关联数组(字典)从 Bash 4.0 版本开始被引入,通过散列数组实现。

1. 定义关联数组

先声明:

declare -A ass_array

添加元素(这样会清空原有的内容):

ass_array=([index1]=val1 [index2]=val2)

或者相当于:

ass_array[index1]=val1

ass_array[index2]=val2

显示内容:

echo "The value of index1 is ${ass_array[index1]}"

2. 列出数组索引

显示数组的所有 key:

echo ${!array_var[*]}

或者:

echo ${!array_var[@]}

列出数组的所有 value:

echo ${array_var[*]}

或者:

echo ${array_var[@]}

三、其他用法

1. 从文件中读取数组:

# 先将各行内容写入文件

cat <arr.txt

apple

pear

grape

banana

EOF

# 将每一行读取为数组的一个元素

names=`cat arr.txt`

echo ${names[*]}

2. 数组的切片

adobe=('Flash' 'Flex' 'Photoshop' 'Dreamweaver' 'Premiere')

echo ${adobe[*]:1} # 从第一个开始到结尾: Flex Photoshop Dreamweaver Premiere

echo ${adobe[*]::2} # 开头两个: Flash Flex

echo ${adobe[*]:1:3} # 从第 [1] 个到第 [3] 个: Flex Photoshop Dreamweaver

3. 连接数组

a=(1 2 3)

b=(a b c)

c=(${a[*]} ${b[*]})

echo ${c[*]} # 1 2 3 a b c

4. 替换数组

下面这个例子可以对数组的每个元素执行替换:

arr=(apple orange app peach)

echo ${arr[*]/app/000} # 输出 000le orange 000 peach

arr=(${arr[*]/app/000}) # 替换原来的数组

5. 删除元素

unset arr[1]

6. 数组的循环

for fruit in ${arr[*]}; do

echo $fruit

done

或者:

for ((i=0;i

echo ${arr[$i]};

done

【转载请附】愿以此功德,回向 >&gt

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值