浅谈shell数组的定义及循环
在Shell脚本中,数组是一个非常有用的概念,可以帮助我们更好地组织和管理数据。本文将介绍Shell数组的定义及循环操作。
定义一个数组
Shell支持两种类型的数组:普通数组和关联数组。普通数组只保存数值,而关联数组包含键值对。
定义一个普通数组,需要使用以下语法:
array_name=(value1 value2 value3 ... valueN)
其中array_name
是数组的名称,value1
到valueN
是数组中的元素。
例如:
fruit=(apple banana kiwi)
这种定义的方式将会创建一个包含三个元素的数组,数组名为fruit
,元素分别为apple
、banana
和kiwi
。
要定义一个关联数组,可以使用以下语法:
declare -A array_name
然后我们可以设置数组的键值对:
array_name[key1]=value1
array_name[key2]=value2
# ...
array_name[keyN]=valueN
例如:
declare -A pet
pet["name"]="Tom"
pet["type"]="cat"
pet["color"]="white"
这种定义的方式将会创建一个包含三个键值对的关联数组,数组名为pet
,键为name
、type
和color
,对应的值分别为Tom
、cat
和white
。
访问数组元素
要访问数组中的元素,可以使用以下语法:
${array_name[index]}
例如:
echo ${fruit[0]} # 输出apple
echo ${pet["name"]} # 输出Tom
循环数组
我们可以使用循环语句来遍历数组中的元素,以下是示例循环的方式。
循环普通数组
使用for循环来遍历普通数组:
fruit=(apple banana kiwi)
for i in ${fruit[@]}; do
echo $i
done
这个例子中,${fruit[@]}
会展开为apple banana kiwi
三个元素,然后我们使用for循环遍历每个元素并打印到屏幕上。
循环关联数组
使用for循环的方式遍历关联数组,需要使用key-value顺序的方式获取数组的值:
declare -A pet
pet["name"]="Tom"
pet["type"]="cat"
pet["color"]="white"
for key in ${!pet[@]}; do
echo "key: $key, value: ${pet["$key"]}"
done
这个例子中,${!pet[@]}
会展开为name type color
三个键,然后我们使用for循环遍历每个键,通过${pet["$key"]}
获取对应的值。
示例说明
示例1
定义一个普通数组nums
,元素为10个随机数,然后遍历数组并输出:
#!/bin/bash
nums=($(shuf -i 1-100 -n 10))
for i in ${nums[@]}; do
echo $i
done
这个脚本中,我们使用了shuf
命令来生成10个随机数,保存在nums
数组中,然后使用for循环来遍历每个元素。
示例输出:
92
13
83
61
53
18
17
41
97
23
示例2
定义一个关联数组prices
,键为苹果、香蕉、饼干、水果,值分别为4、5、2、8,然后使用for循环输出所有元素。
#!/bin/bash
declare -A prices
prices["apple"]=4
prices["banana"]=5
prices["cookie"]=2
prices["watermelon"]=8
for key in ${!prices[@]}; do
echo "product: $key, price: ${prices["$key"]}"
done
这个脚本中,我们使用declare命令定义了一个关联数组prices
,然后使用for循环遍历每个键,并输出对应的值。
示例输出:
product: watermelon, price: 8
product: cookie, price: 2
product: apple, price: 4
product: banana, price: 5
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:浅谈shell数组的定义及循环 - Python技术站