shell 函数

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了shell 函数相关的知识,希望对你有一定的参考价值。

function

函数
1.什么是函数
函数也是具有和别名类似的功能:
简单地说,函数的作用就是把程序里多次调用相同的代码部分定义成一份,然后为这一份代码起个名字,其他所有的重复调用这部分代码就都只调用这个名字就可以了,当需要修改这部分重复代码时,只需要改变函数体内的一份代码即可实现所有调用修改。
使用函数的优势:
1、把相同的程序段定义成函数,可以减少整个程序的代码量。
2、增加程序的可读、易读性。
3、可以实现程序功能模块化,不同的程序使用函数模块化。
强调:对于shell来说,linux系统的2000个命令都可以说是shell函数。

2. shell函数语法
语法格式:
简单语法格式:
函数名(){
指令…
return n
}
规范语法格式:
function 函数名(){
指令 …
return n
}

3. shell函数的执行
调用函数:
1)直接执行函数名即可(不带括号)
函数名
注意:
a)执行函数时,函数后的小括号不要带
b)函数定义及函数体必须在要执行的函数名的前面定义
2)带参数的函数执行方法
函数名 参数 1 参数 2
【函数后接的参数说明】
* shell的位置参数($1、$2、$3、$4、$5、$#、$*、$?以及[email protected])都可以。
* 此时父脚本的参数临时被函数参数所掩盖或隐藏
* $0比较特殊,它仍然是父脚本的名称。
* 当函数完成时,原来的命令行脚本的参数即恢复。
* 在shell函数里面,return命令功能与shell里的exit类似,作用是跳出函数
* 在shell函数体里使用exit会退出整个shell脚本,而不是shell函数。
* return语句会返回一个退出值(返回值)给调度函数的程序
* 函数参数变量是在函数体里面定义。

4、函数范例:
范例1:
脚本如下:

$ cat hs01.sh
#简单函数语法
jonny() {
        echo "I am jonny!"
}

#规范函数语法

function jaye(){
        echo "I am jaye!"
}
jonny    #调用函数jonny
jaye     #调用函数jaye
 
$ sh hs01.sh
I am jonny!
I am jaye!

范例2 调用函数:
1、被调用的函数脚本

$ vim hs01.sh
jonny() {
        echo "I am jonny!"
}
function jaye(){
        echo "I am jaye!"
}

2、调用的函数脚本

$ cat hs02.sh
HS="/server/script/hanshu/hs01.sh"
. $HS
jonny
jaye

3、执行脚本

$ sh hs02.sh
I am jonny!
I am jaye!

范例3 函数传参:

$ cat fun01.sh
who(){
        echo "I am $1."     #定义函数的传参
}
who jonny                   #who 是函数 jonny是参数
$ sh fun01.sh
I am jonny.                 #意思是将jonny 传给$1,那么打印出来的就是I am jonny.

范例4:函数传参及脚本传参

$ cat hs04.sh
who(){
        echo "I am $1."     #定义函数的传参
}
who $1                      #定义脚本的传参
$ sh hs04.sh jonny          #运行脚本接一个jonny参数
I am jonny.                 #打印出jonny,因为Jonny是脚本的传参,那么who jonny就是函数的传参.

范例5:函数传参转成脚本命令行传参,对任意指定URL判断是否异常。
案例一:

$ cat hs05.sh
#!/bin/sh
function check_url(){
curl $1 &>/dev/null
if [ $? -eq 0 ];then
   echo "$1 is ok"
else
   echo "$1 is no"
fi
}
check_url $1

案例二:

$ cat hs05.sh               
#!/bin/sh
function check_url(){
#curl $1 &>/dev/null
wget -T 10 --spider -t 2 $1 &>/dev/null
if [ $? -eq 0 ];then
   echo "$1 is ok"
else
   echo "$1 is no"
fi
}
check_url $1
$ sh hs05.sh www.baidu.com
www.baidu.com is ok
$ sh hs05.sh www.baidaaaau.com
www.baidaaaau.com is no

分步解答:
1、脚本脚本传参检查web url是否正常。
2、检查的功能写成函数
3、函数传参转成脚本命令行传参,对任意指定URL判断是否异常。

本文出自 “微风清凉” 博客,请务必保留此出处http://jiay1.blog.51cto.com/9144615/1842991

以上是关于shell 函数的主要内容,如果未能解决你的问题,请参考以下文章

逆向及Bof基础实践

201555332盛照宗—网络对抗实验1—逆向与bof基础

20155201 李卓雯 《网络对抗技术》实验一 逆向及Bof基础

20155307刘浩《网络对抗》逆向及Bof基础

20155311高梓云《网络对抗》逆向及Bof基础

20145301赵嘉鑫《网络对抗》逆向及Bof基础