Shell脚本之array(数组)的使用

Shell Liemer_Lius 1392℃ 0评论

数组:数组是连续的一组元素,彼此之间有空格分割,通过索引可以取出数组中的某一个值。

默认的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(数组)的使用

喜欢 (0)

发表回复