文章目录
1.函数
1.1函数作用范围
函数在shell脚本中仅在当前shll环境中有效,
shell脚本中变量默认全局有效
若将变量限定在函数内部使用,在变量前加local命令
1.2定义函数操作
[function] 函数名() {
命令序列
[return x]
}
function可省略
return x:x为数值,即执行完返回一个值,0或非0值
1.3递归函数
调用自己本身的函数
#!/bin/bash
# digui
list()
{
for f in `ls $1`
do
if [ -d "$1/$f" ];
then echo "$f"
list "$1/$f" "$2"
else
echo "$2$f"
fi
done
}
list "/var/log" " "
2.数组
数组包含的数据类型:
数值类型
字符类型
使用""或’'定义
2.1数组定义方法
①:数组名=(value0 value1 value2...)
②:数组名= [0]=value [1]=value [2]=value
③:列表名="value0 value1 value2"
数组名=($列表名)
④:数组名[0]="value"
数组名[1]="value"
数组名[2]="value"
2.2获取数组长度
echo ${数组名[*/@]} ##数组内容
echo ${#数组名[*/@]} ##数组内容个数
echo ${数组名[下标]} ##获取数组中某个下标的值。下标:$0.$1.$2
2.3数组遍历
for v in ${数组名[*/@]} ##v:变量名
do
echo $v
done
2.4数组切片
${数组名[*/@]:起始位置:长度}
例:a=1 2 3 4 5
${a[@]:0:2} ##表示从$0开始,长度为2,即内容为1、2
2.5数组的替换
不替换原先数组内容,仅在输出时替换输出显示
${数组名[*/@]/查找字符/替换字符}
2.6数组删除
a=1 2 3 4 5
unset a ##删除
2.7冒泡排序
vi num.sh
#!/bin/bash
# 冒泡排序
num=(60 30 50 20 100 70)
for ((i=1;i<${#num[*]};i++))
do
for ((j=0;j<${#num[*]}-$i;j++))
do
if [ ${num[$j]} -gt ${num[(($j+1))]} ]
then
temp=${num[$j]}
num[$j]=${num[(($j+1))]}
num[(($j+1))]=$temp
fi
done
done
echo ${num[*]}
3.shell脚本调试
①echo命令
②bash命令
sh [-nvx] 脚本名
选项:-n:不会执行该脚本,并检查语法
-v:执行时,先将内容输出到屏幕再执行脚本
-x:将执行内容输出到屏幕上
③set命令
set -x:开启调节模式
set +x:关闭调节模式