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 ,如需转载请自行联系原作者


相关文章
|
21小时前
|
Shell Linux 数据安全/隐私保护
蓝易云 - Linux中的chsh命令及示例
注意:只有拥有适当权限的用户(如root用户)才能更改其他用户的登录shell。普通用户只能更改自己的登录shell。
8 3
|
1天前
|
缓存 Linux
【Linux基础】 常用 yum 命令
yum是Yellowdog Updater, Modified的简称,旨在自动化地升级、安装/移除 RPM 安装包。它通过收集rpm包的相关信息,检查依赖性,并提示用户解决依赖问题,从而简化了Linux系统中软件包的管理。
20 10
|
1天前
|
Ubuntu Linux
【Linux基础】常用 apt 命令
在 Linux 系统中,特别是基于 Debian 的发行版(如 Ubuntu),apt(Advanced Package Tool)是一个用于处理软件包的强大工具。apt 提供了对软件包的搜索、安装、升级、删除等操作的命令行界面,使得用户能够方便地管理系统中的软件包。
22 13
|
1天前
|
Linux C语言 C++
Linux 下centos 查看 -std这个编译时命令 是否支持 C17
Linux 下centos 查看 -std这个编译时命令 是否支持 C17
7 2
|
1天前
|
缓存 监控 安全
Linux top命令详解:持续监听进程运行状态
Linux top命令详解:持续监听进程运行状态
12 3
|
2天前
|
监控 Linux Shell
探索Linux命令nice:优雅地调整进程优先级
`nice`命令在Linux中用于调整进程优先级,影响资源分配。它允许设置-20到19的nice值,数值越低,优先级越高。在数据处理时,使用`nice`可控制任务优先级,避免占用全部CPU资源。例如,`nice -n 10 command`以低优先级启动`command`。注意不要过度使用,应根据系统负载和需求谨慎调整。使用`renice`可改变已运行进程的优先级,生产环境操作需谨慎。
|
2天前
|
安全 Linux 数据安全/隐私保护
探索Linux命令newuidmap:用户ID映射的利器
`newuidmap`是Linux工具,用于在用户命名空间中设定UID映射,支持容器安全。它允许限定容器内进程的主机系统权限,确保数据安全和隔离。通过映射文件或命令行参数定义UID映射,提供灵活性和安全性。例如,为Docker容器设置映射,使进程能访问特定UID的数据文件。使用时需注意映射准确性、权限控制和避免映射过多UID。与其他工具如`newgidmap`配合使用以增强用户命名空间支持。
|
2天前
|
安全 数据挖掘 Linux
深入理解Linux命令:newgrp
`newgrp`命令在Linux中用于切换用户默认组,便于访问特定组的文件。它更改当前会话的默认组,新创建的文件将属于这个新组。主要参数是目标组名,可选 `-` 参数允许从stdin输入组密码。实例中,数据分析师通过`newgrp data_analysis`切换到`data_analysis`组来访问受限文件。注意权限、密码安全和会话限制。最佳实践包括明确切换需求、记录操作和安全处理密码。
|
2天前
|
安全 Linux 数据处理
探索Linux命令newgidmap:用户命名空间与GID映射的桥梁
`newgidmap`是Linux工具,管理用户命名空间的GID映射,关键用于容器技术如Docker。它设置GID映射以确保隔离环境中进程的权限,避免ID冲突。通过映射文件或命令行参数设定主机GID到命名空间GID的对应,保证进程能安全访问文件。在Docker场景中,`newgidmap`配合映射文件调整进程PID的GID映射,确保数据处理任务有适当权限。使用时注意映射准确性、安全性和与其他工具的协同。
|
2天前
|
安全 数据挖掘 Linux
探索Linux命令newgidmap:用户命名空间与GID映射的桥梁
`newgidmap`是Linux中管理用户命名空间GID映射的工具,关键用于容器技术如Docker,保证进程在隔离环境中拥有适当权限。它设置GID映射,使容器进程能访问主机文件系统。主要特点包括灵活映射、安全性和易用性。通过指定PID和映射文件,如`newgidmap <PID> /path/to/gid_map.txt`,实现GID转换。使用时要注意映射准确性、安全性和与其他工具的配合。