shell脚本编程(数组)

目录

一.数组定义

1.1基本概念

2.1定义数组

二.访问数组元素

2.1基础访问

2.2获取数组的所有元素

2.3获取数组的长度

2.4数组的切片

2.5数组的遍历

三.示例脚本


一.数组定义

1.1基本概念

在Shell脚本中,数组是一种用于存储多个值的数据结构。Shell支持一维数组,可以通过索引来访问数组中的元素。

shell中数组可大致分为两类:

1.普通数组:只能用整数作为数组的索引

2.关联数组:可以使用字符串作为数组的索引

2.1定义数组

在Shell中,可以通过以下方式声明和初始化一个数组:

# 声明并初始化数组
array_name=(value1 value2 value3 ... valueN)

例如:

fruits=("Apple" "Banana" "Cherry" "Date")

 关联数组需要提前声明

declare -A myarry1
[root@localhost]# declare -A myarry1
[root@localhost]# myarry1=([name]=newrain [sex]=man [age]=26) 
[root@localhost]# echo ${myarry1[name]}
newrain

二.访问数组元素

2.1基础访问

可以通过索引来访问数组中的元素,索引从0开始:

echo ${array_name[0]}  # 输出第一个元素
echo ${array_name[1]}  # 输出第二个元素

2.2获取数组的所有元素

可以使用@*来获取数组中的所有元素:

echo ${array_name[@]}  # 输出所有元素
echo ${array_name[*]}  # 输出所有元素

关于在shell脚本中数组变量中 “*”跟 “@” 区别
*当变量加上“” 会当成一串字符串处理. 
@变量加上“” 依然当做数组处理. 
在没有加上“” 的情况下 效果是等效的.

2.3获取数组的长度

可以使用#来获取数组的长度:

echo ${#array_name[@]}  # 输出数组的长度
echo ${#array_name[*]}  # 输出数组的长度

2.4数组的切片

可以对数组进行切片操作,获取部分元素:

echo ${array_name[@]:1:2}  # 从索引1开始,获取2个元素

2.5数组的遍历

可以使用for循环来遍历数组中的所有元素:

遍历数组while
[root@localhost]# cat array01.sh 
#!/bin/bash
#++ i 是先自加1后赋值;i ++ 是先赋值后自加1。 
while read line
do     
        host[i++]=$line  # 观察i++ 和 ++i的区别
done </etc/hosts
for i in ${!host[@]}   # 数组的元素索引
do
        echo "$i:${host[i]}"
done


遍历数组for
[root@localhost]# cat array02.sh 
#!/bin/bash
IFS=''
for line in `cat /etc/hosts`  # 读取文件中的每一行
do
        host[j++]=$line
done
for i in ${!host[@]}
do
        echo ${host[i]}
done 

三.示例脚本

以下是一个完整的示例脚本,展示了如何声明、初始化、访问和遍历数组:

#!/bin/bash

# 声明并初始化数组
fruits=("Apple" "Banana" "Cherry" "Date")

# 访问数组元素
echo "第一个水果是: ${fruits[0]}"
echo "第二个水果是: ${fruits[1]}"

# 获取数组的所有元素
echo "所有水果: ${fruits[@]}"

# 获取数组的长度
echo "水果的数量: ${#fruits[@]}"

# 数组的切片
echo "从第二个开始取两个水果: ${fruits[@]:1:2}"

# 遍历数组
echo "遍历所有水果:"
for fruit in "${fruits[@]}"; do
  echo $fruit
done
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

墨影萧萧

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值