目录
一、函数
1、函数的优点:
函数可以理解为脚本的别名,使用函数可以避免代码错误,增强可读性,简化脚本;函数可以将大的工程来分割为若干小的功能模块,代码的可读性更强;
- 将命令序列按格式写在一起
- 可方便重复使用命令序列
2、如何定义函数(shell)
##第一种:简单常用
函数名(){
脚本(命令集合)
}
##第二种:
function 函数名{
脚本内容(命令集合)
}
函数返回值:
return表示退出函数并返回一个退出值,脚本中可以用$?变量显示该值
使用原则:
- 函数一结束就取返回值,因为$?变量只返回执行的最后一条命令的退出状态码
- 退出状态码必须是0~255,超出时值将为除以256取余
function db1 {
read -p "请输入:" value
return $[$value * 2]
}
db1
echo $?
db1() {
read -p "请输入:" value
echo $[$value * 2]
}
result=`db1`
echo $result
3、演示函数的作用以及增删改查
关于函数的使用
#!/bin/bash
num(){ ##num是定义的函数名称
a=66
echo ${a}
}
num ##这里的num是调用上面的num函数脚本
4、创建函数库
vim myfuncs.sh
jiafa() {
echo $[$1 + $2]
}
chengfa() {
echo $[$1 * $2]
}
chufa() {
if [ $2 -ne 0 ];then
echo $[$1 / $2]
else
echo "$2不能为0"
fi
}
vim test.sh
. myfuncs.sh
value1=10
value2=5
result1=`jiafa $value1 $value2`
result2=`chengfa $value1 $value2`
result3=`chufa $value1 $value2`
echo "加法结果为:$result1"
echo "乘法结果为:$result2"
echo "除法结果为:$result3"
二、shell数组
1、数组定义方法
方法一:总体赋值
数组名=(value0 value1 value2 ...)
方法二:
数组名=([0]=value [1]=value [2]=value ...)
方法三:
列表名="value0 value1 value2 ..."
数组名=($列表名)
方法四:单个赋值
数组名[0]="value"
数组名[1]="value"
数组名[2]="value"
2、数组包括的数据类型
获取数组长度
arr_number=(1 2 3 4 5)
arr_length=${#arr_number[*]}
${#arr_number[@]}
echo $arr_length
获取数组的所有信息
##获取数组的所有信息
[root@host1 /data]#echo ${a[*]} ##echo ${数组名[*]}
a b c d e f g
[root@host1 /data]#echo ${a[@]} ##echo ${数组名[@]}
a b c d e f g
读取下标的标号有哪些
##读取下标的标号有哪些
[root@host1 /data]#echo ${!a[*]} ##echo ${!数组名[*]}
0 1 2 3 4 5 6
数组切片
##数组切片
[root@host1 /data]#echo ${a[@]:2} ##echo ${数组名[@]:n:m}表示跳过前n个,只看m个,如果没有m则是后面所有
c d e f g
[root@host1 /data]#echo ${a[@]:2:2} ##跳过前2个,看后面2个
c d
[root@host1 /data]#echo ${a[@]:2:3} ##跳过前2个,看后面3个
c d e
[root@host1 /data]#echo ${a[@]} ##对比查看学习
a b c d e f g
给某个数组原有的值重新赋值
##给某个数组原有的值重新赋值
数组名[标号]=新的值
删除数组
##删除数组
unset 数组名称
三、总结
- 根据已知的列表对象重复执行命令序列,更适合无规律的循环操作。
- while语句可根据特定的条件重复执行命令序列,更适合有规律的循环操作。
- until语句重复测
- Shell函数的调用 使用方法