位置参数:$1,$2
返回值: $?
说明:函数的返回值,是函数最后一条命令执行的状态码
return:自定义状态码
局部变量:local ,只在函数内部有效,强烈建议使用(说明:在shell主体和函数中,创建的变量,默认为全局变量,会互相引用和影响 )
注意::
1、完成特定功能的代码块(片段)
2、在shell中定义函数可以使代码模块化,便于复用代码
3、函数必须先定义,在调用
(一)shell函数语法
1、函数的表示方式
第一种语法 | 第二种语法 | 第三种语法 |
---|---|---|
function 函数名(){ } | function 函数名 {} | 函数名() { } |
2、实例:函数的写法
[[email protected] scripts]# cat 08-01.sh
#!/bin/bash
function oldboy(){ echo "me is $1 teacher" } function oldgirl { echo "i is $1 teacher" } test() { echo "dis is $1" } oldboy $1 oldgirl $2 test $3 [[email protected] scripts]# bash 08-01.sh oldboy oldgirl test me is oldboy teacher me is oldgirl teacher dis is test
3、实例:检测web网站是否正常
wget 命令:
–spider 模拟爬虫(不下载)
-q 安静访问
-o /dev/null 不输出
-T –timeout 超时时间
-t –tries 重试次数
wget --spider -T 5 -q -o /dev/null -t 2 www.baidu.com
echo $?
curl命令:
-me 查看响应头
-s 安静的
-o /dev/null 不输出
-w%{http_code} 返回状态码
[root@centos6-kvm3 scripts]# curl -me -s -o /dev/null -w "%{http_code}/n" www.baidu.com
200
检测网站案例展示:
[[email protected] scripts]# cat 08-02.sh
#!/bin/bash
function usage(){ echo "usage:$0 url" exit 1 } function url_check { wget -q -o /dev/null -T 5 -t 3 $1 if [ $? -eq 0 ] tan echo "$1 is ok!" else echo "$1 is fail!" fi } main(){ if [ $# -ne 1 ] then usage else url_check $1 fi }
练习:
1 #!/bin/bash
2
3 if [ $# -ne 3 ];then
4 echo ” usage `basename $0` par1 par2 par3″
5 exit
6 fi
7 num1=$1 #num1、num2、num3属于自定义变量可以放在函数前,也可以放在函数后
8 num2=$2
9 num3=$3
10 function3() {
11 echo ” $(($num1 * $num2 * $num3)) ” #等同于$[ $num1 * $num2 * $num3 ]
12 }
13 result=`function3 $num1 $num2 $num3` #用自定义变量“result”来接送function3的函数输出,$num1 $num2 $num3 是送给函数的参数
14 echo ” result is: $result “
等同于
1 #!/bin/bash
2
3 if [ $# -ne 3 ];then
4 echo ” usage `basename $0` par1 par2 par3″
5 exit
6 fi
7
8 function3() {
9 echo ” $(( $1 * $2 * $3 )) “
10 }
11 result=`function3 $1 $2 $3`
12 echo ” result is: $result “
函数调用数组-阶乘
1 #!/bin/env bash
2 sum=(1 2 3)
3
4 fun (){
5 local array=1
6 for i in $@;do
7 let array*=$i #等价于 let array=$[ array * i ]
8 done
9 echo “$array”
10 }
11 fun ${sum[@]}
给函数传递数组及返回数组
1 #!/bin/env bash
2 num=(1 2 3)
3 num2=(2 2 3)
4 array(){
5 local newarray=($@) #等同于 local newarray=(`echo $@`)
6 local outarray=() #变量outarray值为空,()表示空
7 local i
8 for ((i=0;i<$#;i++));do
9 outarray[$i]=$[ ${newarray[$i]} * 5 ]
10 done
11 echo “${outarray[@]}”
12
13 }
14 result=`array ${num[@]}`
15 echo “${result[@]}”
16
17
18 result=`array ${num2[@]}`
19 echo “${result[@]}”
原创文章,作者:ItWorker,如若转载,请注明出处:https://blog.ytso.com/1864.html