shell函数语法
#!/bin/bash
function say()
{
echo 'say hello'
}
say
- 方法名后面可以有多个空格
- 括号内可以有多个空格
- 括号可以不要,但是为了美观,建议加上括号
- 如果方法体写成一行,需要在语句后面加分号“;”
shell函数的执行,执行不带参数的函数,直接输入函数名即可
函数名
- 执行不带参数的函数时,直接输入函数名即可(注意不带小括号)
- 函数的定义必须在要执行的程序前面定义或加载
- Shell执行系统中各种程序的执行顺序为:系统别名→函数→系统命令→可执行文件
- 函数执行时,会和调用它的脚本共用变量,也可以为函数设定局部变量及特殊位置参数。
- 在Shell函数里面,return命令的功能与exit类似,return的作用是退出函数,而exit是退出脚本文件。
- return语句会返回一个退出值(即返回值)给调用函数的当前程序,而exit会返回一个退出值(即返回值)给执行程序的当前Shell。
- 如果将函数存放在独立的文件中,被脚本加载使用时,需要使用source或“.”来加载。
- 在函数内一般使用local定义局部变量,这些变量离开函数后就会消失。
带参数的函数执行方法,格式如下
函数名 参数1 参数2
vi check_url.sh
#!/bin/sh
# 帮助函数。
function usage(){
echo "usage:$0 url"
exit 1
}
# 检测 URL 函数
# --spider 当使用此选项调用时,Wget将表现为Web蜘蛛,这意味着它不会下载页面,只需检查它们是否存在。
# -q 关掉Wget的输出,-T指定超时时间,
# --tries 重试次数,无限重试指定数,默认情况是重试20次
function check_url(){
wget --spider -q -o /dev/null --tries=1 -T 5 $1
if [ $? -eq 0 ];then
echo "$1 is yes."
else
echo "$1 is no."
fi
}
# 主函数
function main(){
# 如果传入的是多个参数,则打印帮助函数,提示用户
if [ $# -ne 1 ];then
usage
fi
# 接收函数的传参,即把下文main结尾的 $* 传到这里
check_url $1
}
# 这里的 $* 指所有参数
main $*
# 执行脚本
bash check_url.sh
usage: check_url.sh url
bash check_url.sh www.baidu.com
www.baidu.com is yes.
bash check_url.sh www.2baidu.com
www.2baidu.com is no.