shell脚本第六弹

shell中的函数:
变量 条件 循环 函数 数组 awk
function --> 函数
语法格式:
//函数名
function_name (){
//函数体,在函数中执行的命令行
commands…
//参数返回,return语句可选的
//如果使用return语句,后面跟的值0-255;要是没有使用
则以函数最后一条命令的运行结果作为返回值
return int ;
}

function name {
commands…
}

向函数中传递参数:
位置变量:
$0:表示当前脚本的文件名
$#:表示多少个参数
$@:表示所有的位置参数
$1:表示第一个参数
$2:表示第二个参数

定义一个函数实例:
pass () {
a=$1
echo $0
echo $#
echo $1
echo $2
echo $a
}

定义函数:
pass one two three

执行结果:
pass.sh
3
one two three
one
two
one

局部变量和全局变量:
a=1
//a是全局变量
echo $a
function a {
b=2
//这里的B并不是局部变量,而是全局变量
//如何在函数体内定义局部变量:
local a=2
local b=3
//local命令将全局变量变为局部变量
echo $b
echo $a
}
echo $b
echo $a //结果为空,因为b是在函数体内定义的

系统变量:$FUNCNAME:表示当前函数的名称
a () {
echo $FUNCNAME
}
b (){
echo $FUNCNAME
a
}
b
执行结果:
先输出b在输出a

//执行函数b的过程
b () {
echo $FUNCNAME
a () {
echo $FUNCNAME
}
a
}
b

return :
//参数返回,return语句可选的
//如果使用return语句,后面跟的值0-255;要是没有使用
则以函数最后一条命令的运行结果作为返回值

检查一下某个进程是否存在?
checkpid () {
local i
//定义了一个局部变量
for i in ∗ d o [ − d " ∗ p r o c / * do [ -d "*proc/ do[d"proc/i" ] && return 0
done
return 1
}
//进程存在返回0 不存在返回1
checkpid $pid1 $pid2
if [ $? = 0 ] ; then
echo " is mrunning"
fi
/proc 目录 :虚拟目录,系统内存的映射
屏蔽主机的Ping命令:
echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_all

函数调用的几种特殊情况:
$$:shell本身的PID,就是脚本运行的当前进程ID号
$!:后台运行的最后一个进程的进程ID号

1.函数体内调用函数
2.将函数放入后台
3.递归调用函数 函数体内调用自己

fork炸弹:
.(){.|.&};.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值