欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Shell数组应用解析以及对脚本调试操作

程序员文章站 2022-07-12 12:11:39
...


前言

Shell脚本是我们经常使用的,其中包括许多的类别,数组就是其中之一,以及对Shell脚本的调试。


一 Shell数组

1.1 应用场景包括

获取数组长度
获取元素长度
遍历元素
元素切片
元素替换
元素删除
.....

例如:

a(x1,x2,x3,x4,x5)
a:为数组
x1,x2,x3,x4,x5:为元素

for i in ( ....) 遍历条件 (按顺序读值的过程叫遍历)

1.2 数组定义的方法

方法一:数组名=(value0 value1 value2 ...)

方法二:数组名=([0]=value [1]=value [2]=value ... )[ ]:下标

方法三:列表名=“value0 value1 value2 ... ”
       数组名=($列表名)
       
方法四:数组名[0]=“value”
       数组名[1]=“value”
       数组名[2]=“value”

例如:

方法一:[aaa@qq.com ~]# b=(1 2 3 4 5 )

方法二:[aaa@qq.com ~]# c=([0]=10 [1]=20 [2]=30)

方法三:[aaa@qq.com ~]# list="a b c d"
       [aaa@qq.com ~]# d=($list)

方法四:[aaa@qq.com ~]# e[0]=11
       [aaa@qq.com ~]# e[1]=12
       [aaa@qq.com ~]# e[2]=13
       [aaa@qq.com ~]# e[3]=14

1.3 数组包括的数据类型

数值类型
字符类型
   使用“”或‘’定义

1.4 Shell数组操作

1.4.1 获取数组长度(控制循环次数)

${#数组名[@/*]}

1.4.2 读取某下标赋值

${数组名[下表]}

1.4.3 数组遍历

1.4.4 实例设置:

1.数组长度与下标赋值

[aaa@qq.com ~]# b=(1 2 3 4 5 )
[aaa@qq.com ~]# echo ${#b[*]}
5
[aaa@qq.com ~]# echo ${#b[@]}
5
[aaa@qq.com ~]# echo ${b[0]}
1
[aaa@qq.com ~]# echo ${b[4]}
5
[aaa@qq.com ~]# echo ${b[@]}
1 2 3 4 5


c=([0]=10 [1]=20 [2]=30)
[aaa@qq.com ~]# echo ${#c[@]}
3
[aaa@qq.com ~]# echo ${c[0]}
10
[aaa@qq.com ~]# echo ${c[2]}
30
[aaa@qq.com ~]# echo ${c[*]}
10 20 30

2.数组遍历

[aaa@qq.com ~]# vi num.sh
[aaa@qq.com ~]# chmod +x num.sh
[aaa@qq.com ~]# ./num.sh 

Shell数组应用解析以及对脚本调试操作

#!/bin/bash
# 数组循环
a=(1 2 3 4 5)
for num in ${a[*]}
do 
  echo $num
done

Shell数组应用解析以及对脚本调试操作

1.4.5 数组切片

${数组名[@/*]:起始位置:长度}

1.4.6 数组的切换

${数组名[@/*]/查找字符/替换字符}

1.4.7 数组删除

unset

1.4.8 实例设置:

1.数组切片

[aaa@qq.com ~]# vi num.sh
[aaa@qq.com ~]# ./num.sh 

Shell数组应用解析以及对脚本调试操作

#!/bin/bash
# 数组循环
a=(1 2 3 4 5)
for num in ${a[*]:0:4}
do
  echo $num
done

Shell数组应用解析以及对脚本调试操作

2.数组的切换

[aaa@qq.com ~]# b=(1 2 3 4 5 )
[aaa@qq.com ~]# echo ${b[@]/3/33}   (在输出时替换,本质未变)
1 2 33 4 5
[aaa@qq.com ~]# echo ${b[@]}
1 2 3 4 5
[aaa@qq.com ~]# b=${b[@]/3/33}      (改变本源)
[aaa@qq.com ~]# echo $b
1 2 33 4 5

3.数组删除

[aaa@qq.com ~]# unset b
[aaa@qq.com ~]# echo ${b[@]}

无结果

二 Shell脚本调试

2.1 echo命令

2.2 bash命令

2.2.1 命令语法

 sh [-nvx]  脚本名

2.2.2 常用选项

 -n,-v,-x
 
-n:不会执行该脚本,仅查询脚本语法是否有问题,如果没有语法问题就不显示任何内容,如果有问题会提醒报错。
-v:在执行脚本时,先将脚本的内容输出到屏幕上然后执行脚本,如果有错误,也会给出错误提示。
-x:将执行的脚本内容输出到屏幕上,这个是对调试很有用的参数。     

2.3 set命令

 set -x:开启调节模式
 set +x:关闭调节模式

2.4 实操解析

[aaa@qq.com ~]# vi grade1.sh
[aaa@qq.com ~]# chmod +x grade1.sh
[aaa@qq.com ~]# ./grade1.sh 

Shell数组应用解析以及对脚本调试操作

#!/bin/bash
set -x //开启调试模式
read -p "请输入你的分数(0-100):" GRADE
if [ $GRADE -ge 85 ] && [ $GRADE -le 100 ]
then
echo "$GRADE 分!优秀" set +x //关闭调试模式
elif [ $GRADE -ge 70 ] && [ $GRADE -le 84 ]
then
echo "$GRADE 分,合格" else
echo "$GRADE 分?不合格"
fi

Shell数组应用解析以及对脚本调试操作


总结

通过以上对Shelll数组以及对脚本调试操作的学习,可以更加深入的了解Shell脚本,为更好的运用打下了基础。

相关标签: shell