
Shell函数应用
1.Shell中函数的作用
1.命令合集,完成特定功能的代码块
2.在shell中定义函数可以使用代码模块化, 便于复用代码,加强可读性
3.函数和变量类似, 先定义才可调用,如果定义不调用则不会被执行传参 $1,$2 变量 local 返回值 return $?Shell如何定义函数
# 方式一 函数名() { command } # 方式二 function 函数名 { command }
2.Shell如何调用函数
调用函数非常简单, 只需要在脚本中写入函数的名称即可
// 在脚本中直接写入函数名即可完成函数调用 function_name //函数传参 fun $1 传入脚本后第一个参数 fun $* 接收所有参数的传递
3.Shell中定义函数与调用示例1
//1.定义一个函数 fun01(){ num=10 for i in $(seq $num) do total=$[$i + $num] done echo "计算结果是: $total" } //2.调用函数 fun01 //3.执行Shell脚本结果 [root@Shell ~]# sh fun.sh 计算结果是: 20 ####修改后1版 //1.定义一个函数 fun01(){ for i in $(seq $num) do total=$[$i + $num] done echo "计算结果是: $total" } //2.给num传递值 num=10 //3.调用函数 fun01 //4.执行Shell脚本结果 [root@Shell ~]# sh fun.sh 计算结果是: 20 ####修改后2版 //1.定义一个函数 fun01(){ //2.num接收$1的传参 num=$1 for i in $(seq $num) do total=$[$i + $num] done echo "计算结果是: $total" } //3.将脚本的位置参数传递给函数 fun01 $1 //4.执行Shell脚本结果 [root@Shell ~]# sh fun.sh 10 计算结果是: 20 ####修改后3版 //1.定义一个函数 fun01(){ //2.num接收$1的传参 num=$1 for i in $(seq $num) do total=$[$i + $num] done echo "计算结果是: $total" } //3.将脚本的位置参数传递给函数 fun01 $1 fun01 $2 fun01 $3 //4.执行Shell脚本结果 [root@Shell ~]# sh fun.sh 5 10 20 计算结果是: 10 计算结果是: 20 计算结果是: 40
4.Shell中函数的位置参数传递
# 脚本执行有自己的位置参数, 函数也有自己的位置参数, 可以将两者发生互动。
#1.定义函数,接收三个位置参数
fun3() {
echo "$(($1 * $2 * $3))"
}
#result=`fun3 2 3 4`
#2.将位置参数传递给函数
result=`fun3 $1 $2 $3`
echo "result is: $result"
######修改版
#1.定义函数,接收三个位置参数
fun3() {
echo "$(($num1 * $num2 * $num3))"
}
num1=$1
num2=$2
num3=$3
result=`fun3 $num1 $num2 $num3`
echo "result is: $result"
###函数传参使用场景
source /etc/init.d/functions
Test() {
if [ $? -eq 0 ];then
action "Nginx $1 is ok" /bin/true
else
action "Nginx $1 is error" /bin/false
fi
}
case $1 in
start)
nginx
Test $1
;;
stop)
nginx -s stop
Test $1
;;
reload)
nginx -s reload
Test $1
;;
*)
echo "USAGE: $0 { start|stop|reload }"
esac
5.Shell的函数返回值,也算是退出的状态
# echo 返回函数返回值 # return 返回指定函数退出状态码 fun2() { echo 100 return 1 } result=`fun2` echo "函数的状态码是: $?" echo "函数的返回值是: $result" ###例子 [root@ansible-node30 nginx]# cat fun1.sh file=/etc/ttt # 定义文件 t_file(){ # 函数判断 if [ -f $file ];then return 0 else return 1 fi } # 调用函数 t_file #根据函数返回状态码进行输出 if [ $? -eq 0 ];then echo "该文件存在 $file" else echo "该文件不存在 $file" fi ##例子: 1.如果用户输入的数值大于0且小于10则返回0 2.如果用户输入的数值大于等于10且小于20则返回1 3.如果用户输入的数值大于等于20且小于30则返回2 4.输入其余数值则返回3 checknum(){ read -p "请输入对应的数字:" num if [ $num -ge 0 -a $num -lt 10 ];then return 0 elif [ $num -ge 10 -a $num -lt 20 ];then return 1 elif [ $num -ge 20 -a $num -lt 30 ];then return 2 else return 3 fi } # 调用函数 checknum # 保存当时$?的返回值 Rtv=$? #根据返回值进行判断 if [ $Rtv -eq 0 ];then echo "你输入的数字大于0小于10" elif [ $Rtv -eq 1 ];then echo "你输入的数字大于10小于20" elif [ $Rtv -eq 2 ];then echo "你输入的数字大于20小于30" fi
6.Shell中函数相关使用场景和案例
- 1.所有脚本必须有选择菜单
- 2.所有的危险操作均需给出提示
- 1.编写系统初始化脚本
配置 YUM
安装 Nginx
q 键退出程序- 2.编写虚拟机管理脚本
安装虚拟机
关闭虚拟机
打开虚拟机
克隆虚拟机(可以指定克隆的数量)
q键退出程序- 3.编写系统管理工具箱
查看内存的使用情况
查看磁盘的使用情况
查看系统的负载
q 键退出程序