Shell数组
应用场景
- 获取数组长度
- 获取元素长度
- 遍历元素
- 元素切片
- 元素替换
- 元素删除
定义方法
方法一:数组名=(value0 value1 value2 ...)
方法二:数组名=([0]=value [1]=value [2]=value ... )[ ]:下标
方法三:列表名=“value0 value1 value2 ... ”
数组名=($列表名)
方法四:数组名[0]=“value”
数组名[1]=“value”
数组名[2]=“value”
数据类型
数值类型
字符类型
使用 “” 或 ‘’ 定义
数组操作
${#数组名[@/*]} 获取数组长度(控制循环次数)
${数组名[下表]} 读取某下标赋值
${数组名[@/*]:起始位置:长度} 数组切片
${数组名[@/*]/查找字符/替换字符} 数组切换
unset 数组删除
示例
[root@server2 ~]# b=(1 2 3 4 5 )
[root@server2 ~]# echo ${#b[*]}
5
[root@server2 ~]# echo ${#b[@]}
5
[root@server2 ~]# echo ${b[0]}
1
[root@server2 ~]# echo ${b[4]}
5
[root@server2 ~]# echo ${b[@]}
1 2 3 4 5
c=([0]=10 [1]=20 [2]=30)
[root@server2 ~]# echo ${#c[@]}
3
[root@server2 ~]# echo ${c[0]}
10
[root@server2 ~]# echo ${c[2]}
30
[root@server2 ~]# echo ${c[*]}
10 20 30
数组遍历示例
[root@server2 ~]# vim num.sh
#!/bin/bash
# 数组循环
a=(1 2 3 4 5)
for num in ${a[*]}
do
echo $num
done
[root@server2 ~]# chmod +x num.sh
[root@server2 ~]# ./num.sh
数组切片示例
[root@server2 ~]# vim num.sh
#!/bin/bash
# 数组循环
a=(1 2 3 4 5)
for num in ${a[*]:0:4}
do
echo $num
done
[root@server2 ~]# ./num.sh
数组切换示例
[root@server2 ~]# b=(1 2 3 4 5 )
[root@server2 ~]# echo ${b[@]/3/33} (在输出时替换,本质未变)
1 2 33 4 5
[root@server2 ~]# echo ${b[@]}
1 2 3 4 5
[root@server2 ~]# b=${b[@]/3/33} (改变本源)
[root@server2 ~]# echo $b
1 2 33 4 5
Shell脚本调试
sh [选项] 脚本名
常用选项
-n:不会执行该脚本,仅查询脚本语法是否有问题,如果没有语法问题就不显示任何内容,如果有问题会提醒报错。
-v:在执行脚本时,先将脚本的内容输出到屏幕上然后执行脚本,如果有错误,也会给出错误提示。
-x:将执行的脚本内容输出到屏幕上,这个是对调试很有用的参数。
set命令
set -x:开启调节模式
set +x:关闭调节模式