bash编程系列之数组

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了bash编程系列之数组相关的知识,希望对你有一定的参考价值。

array数组:


如何声明一个数组

declare -a AA


赋值方法1:

AA[0]=jerry

AA[1]=tom

AA[2]=wendy

AA[6]natasha

之间默认为null


赋值方法2:

AA=(jerry tom wendy)


AA=([0=]jerry [1]=tom [2]=wendy [6]=natasha)


AA[3]=selina

AA[4]=nikita


实验:

[[email protected] scripts]# vim testarray.sh 

#!/bin/bash

#

AA=([0]=jerry [1]=tom [6]=nikita)

echo ${AA[1]}

echo ${AA[2]}

echo ${AA[6]}


[[email protected] scripts]# bash testarray.sh 

tom


nikita

[[email protected] scripts]#  


随机选一个0-6之间的值

[[email protected] scripts]# vim testarray.sh 

#!/bin/bash

#

AA=([0]=jerry [1]=tom [6]=nikita)

INDEX=$[$RANDOM%7] 随机选一个

echo ${AA[$INDEX]}


----------------------------------

随机20次:

#!/bin/bash

#

AA=([0]=jerry [1]=tom [6]=nikita)

for I in {1..20};do

INDEX=$[$RANDOM%7]

echo ${AA[$INDEX]}

I+=1

done

-----------------------------------

#!/bin/bash

#

AA=([0]=jerry [1]=tom [6]=nikita)


echo ${#AA[0]} 表示显示最前面的元素长度 

[email protected] scripts]# bash testarray.sh 

5

------------------------------------------

#!/bin/bash

#

AA=([0]=jerry [1]=tom [6]=nikita)


echo ${#AA[@]}    @或者*表示引用元素个数(值不为空的个数)

[[email protected] scripts]# bash testarray.sh 

3

----------------------------------

1.写一个脚本找出数据中的最大数。这组数据用数据保存

#!/bin/bash

#

AA=(1 2 3 4 5 6 7111 8  9 101)

declare -i MAX=${AA[0]}

SS=$[${#AA[@]}-1]

for I in `seq 1 $SS` ;do

if [ $MAX -lt ${AA[$I]} ];then

MAX=${AA[$I]}

fi

done

echo $MAX


---------------------------------------

随机生成10个元素的组,然后找出最大数

#!/bin/bash

#

for I in {0..9};do

AA[$I]=$RANDOM

echo -n "${AA[$I]} "

done

echo

declare -i MAX=${AA[0]}

SS=$[${#AA[@]}-1]

for I in `seq 1 $SS` ;do

if [ $MAX -lt ${AA[$I]} ];then

MAX=${AA[$I]}

fi

done

echo $MAX


--------------------------------------

生成一个数组:

1.数组的元素个数为1-39

2.数组的元素不能相同

3.显示此数组各元素的值


#!/bin/bash


read -p "The element numbers[1-39]: " ELENUM

declare -a ARRAY     #将ARRAY定义为数组

function COMELE {

for J in `seq 0 $[${#ARRAY[@]}-1]`;do

   if [ $1 -eq ${ARRAY[$J]} ];then

      return 1

   fi

done

return 0

}

for I in `seq 0 $[$ELENUM-1]`; do

 while true ;do         #while true 死循环

 ELEMENT=$RANDOM

 COMELE $RANDOM

 if [ $? -eq 0 ];then

 break

 fi

done

ARRAY[$I]=$ELEMENT

echo "${ARRAY[$I]}" 

done

---------------------------------------------

trap:在脚本中捕捉特定信号,并且可以特定处理

1:SIGHUP

2:SIGINT

9:SIGKILL

15:SIGTERM

18:SIGCONT

19:SIGSTOP

trap ‘echo "NO quit..."‘  INT

可以定义函数来实现。当用处执行Ctrl+C撤销的时候。把之前创建的文件删除。

#!/bin/bash

#

function DEL {

rm -rf /var/tmp/test

exit

}

trap ‘DEL‘ INT

mkdir -p /var/tmp/test

while true ;do

touch /var/tmp/test/file-`date +%F-%H-%M-%S`

sleep 2

done

-------------------------------


本文出自 “运维成长路” 博客,谢绝转载!

以上是关于bash编程系列之数组的主要内容,如果未能解决你的问题,请参考以下文章

11bash编程之数组

[Linux Shell学习系列五]Shell编程基础-Bash的内部变量,位置参数和特殊参数

Bash编程之数组和字符串处理

16bash编程之数组介绍

linux下Bash编程之数组Array详解

bash脚本编程之数组和字符串处理