linux命令:bash编程之数组

简介:

变量:一段内存空间,用于存储字符,数字等信息.


数组:


如何申明一个数组:

赋值方法1:

AA[0]=jerry

AA[1]=tom

AA[3]=wendy

AA[6]=natasha


赋值方法2:

AA=(jerry "tom obama" wendy natasha)


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


AA[3]=selina

AA[4]=nikita


如何获取数组中非空的字符个数

${#AA[*]}  或者 ${#AA[@]}


如何获取数组中某一组值的字符长度

${#AA[0]} :表示数组中第一组值的字符长度

${#AA[1]} :表示数组中第二组值的字符长度

.....

${#AA[N]} :表示数组中第N-1组值的字符长度




脚本实例:


实例一: 

写一个脚本:随机从10个同学们中选择一位出来回答问题。

vim student.sh

#!/bash/bin

#

#   随机从10个同学选择一个,并显示出来。


AA=(jerry "tom stail" wendy natasha kely selina john jack xiaowu "A dong")


INDEX=$[$RANDOM%10]

echo "${AA[$INDEX]}"


附加:

从10个同学里面随机十次,并显示出他们的名字


vim student.sh

#!/bash/bin

#

#   随机从10个同学选择一个,并显示出来。


AA=(jerry "tom stail" wendy natasha kely selina john jack xiaowu "A dong")


for I in {1..10}; do

INDEX=$[$RANDOM%10]

echo "${AA[$INDEX]}"

done

[root@john script]# bash student.sh 

wendy

tom stail

jerry

tom stail

kely

natasha

xiaowu

jack

kely

natasha


实例二:

写一个脚本:显示10个随机数,并从中选出最大数;


vim findmax.sh

#!/bash/bin

#

#  显示10个随机数,并从中选出最大数;


for I in {0..9}; do

 ARRAY[$I]=$RANDOM

 echo -n "${ARRAY[$I]} "
 sleep 1

done

echo


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

INDEX=${#ARRAY[*]}

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

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

   MAX=${ARRAY[$I]}

 fi

done


echo "The MAX Number is $MAX !"

执行结果:

[root@john script]# sh findmax1.sh 

9794 23744 258 23323 26204 15429 3985 5762 26162 24422 

The MAX Number is 26204 !


实例三:

写一个脚本,选择随机生成0-39中不相同的数字;

#!/bash/bin

#

#   输入需要显示的数字个数,并显示,且不能重复。

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

 declare -a 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

        ELEMENT=$[$RANDOM%40]

        COMELE $ELEMENT

     if [ $? -eq 0 ]; then

       break

     fi

   done

   ARRAY[$I]=$ELEMENT

  

   echo "${ARRAY[$I]}"

  done














本文转自wang650108151CTO博客,原文链接:http://blog.51cto.com/woyaoxuelinux/1912102 ,如需转载请自行联系原作者


相关文章
|
10月前
|
安全 算法 Ubuntu
Linux(openssl)环境:编程控制让证书自签的技巧。
总结:在Linux环境中,OpenSSL是一个非常实用的工具,可以帮助我们轻松地生成自签名证书。通过上述三个简单步骤,即可为内部网络、测试环境或开发环境创建自签名证书。但在公共访问场景下,建议购买经过权威认证机构签发的证书,以避免安全警告。
449 13
|
Shell Linux
Linux shell编程学习笔记30:打造彩色的选项菜单
Linux shell编程学习笔记30:打造彩色的选项菜单
|
12月前
|
JavaScript Ubuntu Linux
如何在阿里云的linux上搭建Node.js编程环境?
本指南介绍如何在阿里云Linux服务器(Ubuntu/CentOS)上搭建Node.js环境,包含两种安装方式:包管理器快速安装和NVM多版本管理。同时覆盖全局npm工具配置、应用部署示例(如Express服务)、PM2持久化运行、阿里云安全组设置及外部访问验证等步骤,助你完成开发与生产环境的搭建。
|
Linux
Linux编程: 在业务线程中注册和处理Linux信号
通过本文,您可以了解如何在业务线程中注册和处理Linux信号。正确处理信号可以提高程序的健壮性和稳定性。希望这些内容能帮助您更好地理解和应用Linux信号处理机制。
245 26
|
Linux
Linux编程: 在业务线程中注册和处理Linux信号
本文详细介绍了如何在Linux中通过在业务线程中注册和处理信号。我们讨论了信号的基本概念,并通过完整的代码示例展示了在业务线程中注册和处理信号的方法。通过正确地使用信号处理机制,可以提高程序的健壮性和响应能力。希望本文能帮助您更好地理解和应用Linux信号处理,提高开发效率和代码质量。
273 17
|
存储 监控 Linux
嵌入式Linux系统编程 — 5.3 times、clock函数获取进程时间
在嵌入式Linux系统编程中,`times`和 `clock`函数是获取进程时间的两个重要工具。`times`函数提供了更详细的进程和子进程时间信息,而 `clock`函数则提供了更简单的处理器时间获取方法。根据具体需求选择合适的函数,可以更有效地进行性能分析和资源管理。通过本文的介绍,希望能帮助您更好地理解和使用这两个函数,提高嵌入式系统编程的效率和效果。
622 13
|
运维 监控 Shell
深入理解Linux系统下的Shell脚本编程
【10月更文挑战第24天】本文将深入浅出地介绍Linux系统中Shell脚本的基础知识和实用技巧,帮助读者从零开始学习编写Shell脚本。通过本文的学习,你将能够掌握Shell脚本的基本语法、变量使用、流程控制以及函数定义等核心概念,并学会如何将这些知识应用于实际问题解决中。文章还将展示几个实用的Shell脚本例子,以加深对知识点的理解和应用。无论你是运维人员还是软件开发者,这篇文章都将为你提供强大的Linux自动化工具。
|
Shell Linux
Linux shell编程学习笔记82:w命令——一览无余
Linux shell编程学习笔记82:w命令——一览无余
|
Linux Shell
Linux系统编程:掌握popen函数的使用
记得在使用完 `popen`打开的流后,总是使用 `pclose`来正确关闭它,并回收资源。这种做法符合良好的编程习惯,有助于保持程序的健壮性和稳定性。
846 6
|
Oracle Java 关系型数据库
Linux下JDK环境的配置及 bash: /usr/local/java/bin/java: cannot execute binary file: exec format error问题的解决
如果遇到"exec format error"问题,文章建议先检查Linux操作系统是32位还是64位,并确保安装了与系统匹配的JDK版本。如果系统是64位的,但出现了错误,可能是因为下载了错误的JDK版本。文章提供了一个链接,指向Oracle官网上的JDK 17 Linux版本下载页面,并附有截图说明。
Linux下JDK环境的配置及 bash: /usr/local/java/bin/java: cannot execute binary file: exec format error问题的解决