数组:数组是连续的一组元素,彼此之间有空格分割,通过索引可以取出数组中的某一个值。
默认的shell变量类型全部为字符串,所以,定义数组需要将数组用括号括起来。
声明一个数组:
declare -a AA // 实际上,直接用索引赋值、或者用括号赋值数组即可
数组的定义:
方法一:
AA[0]=tom
AA[1]=jerry
AA[2]=natasha
AA[6]=nikita // 中间没有定义索引的元素值都为空
方法二:
AA=([0]=tom [1]=jerry [2]=natasha [6]=nikita)
AA=(tom jerry natasha nikita)
注意:方法二中第二行赋值方法,只定义了四个元素,而第一行的方法有7个元素,只不过索引3-5的元素值为空。
实例:
数组的操作:
[root@Master ~]# array=(23 44 12 43 12)
[root@Master ~]# echo $array // $array默认是第一个数值
23
[root@Master ~]# echo ${array[*]} // *和@都可以打印所有的项
23 44 12 43 12
[root@Master ~]# echo ${array[@]}
23 44 12 43 12
[root@Master ~]# echo ${array[2]} // 中括号中的索引(0开始),可以取特定的值
12
用数组,完成数字从小到大的排列:
#!/bin/bash
#
# Date: 2018-01-06
# Script Name: create.sh
# Author: Liemer_Lius
array=(12 32 111 21 42 14)
num=${#array[*]}
for (( i=0; i<num; i++ )); do
for (( j=i+1; j<num; j++ )); do
if [ ${array[i]} -ge ${array[j]} ]; then
tmp=${array[i]}
array[i]=${array[j]}
array[j]=$tmp
fi
done
done
echo "After sorted: ${array[*]}"
[root@Master ~]# ./i.sh // 执行结果
After sorted: 12 14 21 32 42 111
注:通过一个tmp变量接收暂时的值,用一个嵌套的for循环,完成每一次的比较,达到将数字从小到大排列的目的。
转载请注明:liutianfeng.com » Shell脚本之array(数组)的使用
发表回复
要发表评论,您必须先登录。