shell脚本之函数初识详解程序员

位置参数:$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

(0)
上一篇 2021年7月15日
下一篇 2021年7月15日

相关推荐

发表回复

登录后才能评论