shell编程之函数

shell编程之函数

函数的作用就是将程序里多次被调用的相同的代码组合起来(函数体),为其取个名字(函数名),其它所有想重复调用这部分代码的地方都只需要调用这个名字
函数的优势:
把相同的程序定义成函数,可以减少程序的代码量,提升开发效量
增加程序的可读、易读性,提升管理效率
可以实现程序功能模块化,使程序具备通用性(可移植性)

1.shell函数语法

方法一:
function 函数名() {
    指令集...
    return n
}
方法二:
function 函数名 {
    指令集...
    return n
}
方法三:
函数名() { 
    指令集...
    return n
}

1.1 函数的执行

1.不带参数的函数执行时,直接输入函数名即可(不带小括号):格式如下:函数名
有关执行函数的重要说明:
执行函数时,函数名前的function和函数后的小括号都不要带
函数的定义必须要在执行前面定前或加载
shell执行系统中各种程序的顺序为:系统别名-函数-系统命令-可执行文件
函数执行时,会和调用它的脚本共用变量,可以为函数设定局变变量以及特殊位置参数
在shell函数里,return命令功能与exit类似,作用是退出函数,而exit是退出脚本文件
return语句会返回一个退出值(返回值)给调用函数的当前程序,而exit会返回一个退出值给执行程序的当前shell
如果函数存放在独立的文件中,被脚本加载使用时,需要使用source或.来加载
在函数内一般使用local定义局部变量,这些变量离开函数后即消失
2.带参数函数的执行方法,格式如下:函数名 参数1 参数2
函数后接参数说明:
shell的位置参数$1、$2....$#、$*、$?、$@都可以作为函数的参数使用
此时父脚本的参数临时的被函数参数所掩盖或隐藏
$0比较特殊,它仍是父脚本的名称
当函数执行完成时,原来的命令脚本参数即恢复
函数的参数变量是在函数体里面定义的

1.2 简单函数执行

oldboy() {
   echo "I am oldboy"
}
oldboy
function oldgirl() {
 echo "I am oldgirl"
}  
oldgirl
function test {
  echo "this is test"
}
test

1.3 带参数函数执行

[root@ci-node1 scripts]# cat 12.sh.1 
#!/bin/bash
##############################################################
# File Name: 12.sh
# Version: V1.0
# Author: liu
# Organization: 
# Created Time : 2019-04-12 10:36:48
# Description:
##############################################################
oldboy() {
   echo "I am $1"
}
oldboy $1
ps:从接收脚本参数,然后将收到参数传给函数

2.函数案例

2.1 通过脚本传参的方式,检查Web 网站URL是否正常

使用命令访问url命令:

wget命令:
--spider:模拟爬虫
-q:安静访问
-o /dev/null:不输出
-T --timeout 超时时间
-t --tries 重试次数
wget --spider -T 5 -q -o /dev/null -t 2 www.baidu.com
curl命令:
-I 看响应头
-s 安静的
-o /dev/null 不输出
-w %{http_code} 返回状态码,200
curl -I -m 5 -s -w "%{http_code}\n" -o /dev/null  www.baidu.com

案例:

[root@ci-node1 scripts]# cat 13.sh 
#!/bin/bash
##############################################################
# File Name: 13.sh
# Version: V1.0
# Author: liu
# Organization: 
# Created Time : 2019-04-12 18:07:02
# Description:
##############################################################
chekurl() {
   wget --spider -o /dev/null -T 5 $1
   if [ $? -ne 0 ]
   then
       echo "网站url不正常!"
   else
       echo "网站正常"
    fi
}
usage() {
    echo "Usage:$0 url"
}
main() {
   if [ $# -ne 1 ]
   then
       usage
   else
       chekurl $1
   fi

}
main $*
posted @ 2019-04-22 08:40  游走在边缘的人  阅读(138)  评论(0编辑  收藏  举报