网站建设公司人员组成,信息化网站建设有什么用,重庆装修房子可以提取公积金吗,便捷网站建设多少钱概念
函数就是将你需要执行的shell命令组合起来#xff0c;组成一个函数体。一个完整的函数包括函数头和函数体#xff0c;其中函数名就是函数的名字。
优点
将相同的程序#xff0c;定义#xff0c;封装为一个函数#xff0c;能减少程序的代码数量#xff0c;提高开发…概念
函数就是将你需要执行的shell命令组合起来组成一个函数体。一个完整的函数包括函数头和函数体其中函数名就是函数的名字。
优点
将相同的程序定义封装为一个函数能减少程序的代码数量提高开发效率。使用函数能让你写更少的代码早点写完早点回家休息多好。函数能够增加代码的可读性易读性容器管理。
函数的实际开发
shell函数定义的语法
# 标准shell函数定义
function 函数名() {函数体你想执行的Linux命令return 返回值
}# 偷懒写法
# 当使用function关键字时候可以省略括号
function 函数名 {函数体你想执行的那些命令。。。。return 返回值
}# 超人懒人写法shell老司机的时候
# 必须有括号
函数名() {函数体代码。。。return 返回值
}# 执行该函数
函数名执行函数的基础概念
有关函数执行的基本概念
执行shell函数直接写函数名字即可无需添加其他内容函数必须先定义在执行shell脚本自上而下加载函数体内定义的变量称之为局部变量函数体内需要添加return语句作用是退出函数且赋予返回值给调用该函数的程序也就是shell脚本return语句和exit不同 return是结束函数的执行返回一个退出值、返回值exit是结束shell环境返回一个退出值、返回值给当前的shell 函数如果单独写入一个文件里需要用source读取函数内使用local关键字定义局部变量
函数实践 场景1 xiao123xiao123:~/Downloads/shscripts$ cat ./func1.sh
#! /bin/bashfunction chaochao() {cd /tmpecho 我准备创建一个文件且写入信息echo 爱的魔力转圈圈 ./music.txtreturn 0
}chaochao
xiao123xiao123:~/Downloads/shscripts$运行结果:
xiao123xiao123:~/Downloads/shscripts$ bash ./func1.sh
我准备创建一个文件且写入信息
xiao123xiao123:~/Downloads/shscripts$ ls /tmp/
message.txt
music.txt
xiao123xiao123:~/Downloads/shscripts$
xiao123xiao123:~/Downloads/shscripts$ cat /tmp/music.txt
爱的魔力转圈圈
xiao123xiao123:~/Downloads/shscripts$场景2 函数定义和执行分开在不同的文件中Linux自带的诸多脚本都是基于该形式使用的。 函数写在一个文件中只定义不执行另外一个脚本读取该文件且加载该函数
1. 先定义一个my_function.c脚本作用是只记录函数不运行
xiao123xiao123:~/Downloads/shscripts$ cat my_function.sh
#!/bin/bashchao(){echo 我是函数我被执行~你真棒
}
xiao123xiao123:~/Downloads/shscripts$2.如何检查当前的shell环境变量
xiao123xiao123:~/Downloads/shscripts$ set | grep ^chao
xiao123xiao123:~/Downloads/shscripts$3.利用source命令读取shell脚本能够加载其变量到当前shell环境中
xiao123xiao123:~/Downloads/shscripts$ source my_function.sh
xiao123xiao123:~/Downloads/shscripts$4.再次验证
xiao123xiao123:~/Downloads/shscripts$ set | grep ^chao
chao ()
xiao123xiao123:~/Downloads/shscripts$5.可以推出当前shell再次登录查看该环境变量
exit
xiao123xiao123:~$ chao
Command chao not found, did you mean:command chaos from deb emboss (6.6.0dfsg-11ubuntu1)command chat from deb ppp (2.4.9-11ubuntu3)
Try: apt install deb name
xiao123xiao123:~$xiao123xiao123:~/Downloads/shscripts$ source my_function.sh
xiao123xiao123:~/Downloads/shscripts$ set | grep ^chao
chao ()
xiao123xiao123:~/Downloads/shscripts$ chao
我是函数我被执行~你真棒
xiao123xiao123:~/Downloads/shscripts$使用脚本加载chao并执行
xiao123xiao123:~/Downloads/shscripts$ cat fun3.sh
#! /bin/bash[ -f ./my_function.sh ] . my_function.sh || exit -1chao
xiao123xiao123:~/Downloads/shscripts$xiao123xiao123:~/Downloads/shscripts$ bash fun3.sh #启动子shell在子shell中加载
我是函数我被执行~你真棒
xiao123xiao123:~/Downloads/shscripts$xiao123xiao123:~/Downloads/shscripts$ chao
\Command chao not found, did you mean:command chat from deb ppp (2.4.9-11ubuntu3)command chaos from deb emboss (6.6.0dfsg-11ubuntu1)
Try: apt install deb name
xiao123xiao123:~/Downloads/shscripts$xiao123xiao123:~/Downloads/shscripts$ source fun3.sh # 在当前shell中加载
我是函数我被执行~你真棒
xiao123xiao123:~/Downloads/shscripts$ set | grep ^chao
chao ()
xiao123xiao123:~/Downloads/shscripts$ chao
我是函数我被执行~你真棒
xiao123xiao123:~/Downloads/shscripts$bash 开启子shell执行source使用当前shell执行
函数处理参数
函数可以处理来自命令行传到shell脚本中的参数。 my_function.sh xiao123xiao123:~/Downloads/shscripts$ cat my_function.sh
#!/bin/bashchao(){echo 我是函数我被执行~你真棒
}helloPyyu(){echo 兄台你传入的脚本参数依次是 $1 $2 $3并且参数个数一共是$#
}
xiao123xiao123:~/Downloads/shscripts$fun3.sh xiao123xiao123:~/Downloads/shscripts$ cat fun3.sh
#! /bin/bash[ -f ./my_function.sh ] . my_function.sh || exit -1helloPyyu $1 $2 $3
xiao123xiao123:~/Downloads/shscripts$运行结果 xiao123xiao123:~/Downloads/shscripts$ bash fun3.sh
兄台你传入的脚本参数依次是 并且参数个数一共是0
xiao123xiao123:~/Downloads/shscripts$ bash fun3.sh 2131 4543 5646 45645
兄台你传入的脚本参数依次是 2131 4543 5646并且参数个数一共是3
xiao123xiao123:~/Downloads/shscripts$ bash fun3.sh 2131 4543 5646
兄台你传入的脚本参数依次是 2131 4543 5646并且参数个数一共是3
xiao123xiao123:~/Downloads/shscripts$函数实战开发 检测url是否正常要求是函数开发形式 xiao123xiao123:~/Downloads/shscripts$ cat check_url.sh
#!/bin/bashusage() {echo Usage: $0 urlexit 1
}check_url() {wget --spider -q -o /dev/null --tries1 -T 5 $1if [ $? -eq 0 ]thenecho $1 is running...elseecho $1 is down...fi
}main() {if [ $# -ne 1 ]thenusageficheck_url $1
}main $*
xiao123xiao123:~/Downloads/shscripts$运行结果 xiao123xiao123:~/Downloads/shscripts$ bash check_url.sh www.baidu.com
www.baidu.com is running...
xiao123xiao123:~/Downloads/shscripts$ bash check_url.sh www.baidu.coms
www.baidu.coms is down...
xiao123xiao123:~/Downloads/shscripts$ bash check_url.sh www.baidu.coms fd
Usage: check_url.sh url
xiao123xiao123:~/Downloads/shscripts$ bash check_url.sh
Usage: check_url.sh url
xiao123xiao123:~/Downloads/shscripts$美化脚本 xiao123xiao123:~/Downloads/shscripts$ cat check_url.sh
#!/bin/bash. /lib/lsb/init-functionsusage() {echo Usage: $0 urlexit 1
}check_url() {wget --spider -q -o /dev/null --tries1 -T 5 $1if [ $? -eq 0 ]thenlog_success_msg echo $1 is running...elselog_failure_msg $1 is down...fi
}main() {if [ $# -ne 1 ]thenusageficheck_url $1
}main $*
xiao123xiao123:~/Downloads/shscripts$运行结果