shell 函数

函数定义

格式1

function fname() 
{
	Code Block
	......
}

格式2

fname()
{
	Code Block
	......
}

格式3

fname() { Code Block ; }  # ;必须要有{} 和代码块之间要有至少一个空格 

函数调用

不带参数

function fname()
{
      echo "In fname function."
}
fname  # 直接使用函数名即可调用

带参数

function fname() 
{
	echo $0  # $0为函数名
	echo $1  # $1为函数的第一个参数
	echo $@  # $@为所有参数
	echo $#  # $#为参数的数量
}
fname a b c  # arg1就是第一个参数

递归函数

function fname() 
{
	fname # 在定义的函数内部执行函数本身
}

Fork炸弹

:(){ :|:& };:

# 该函数会不断生成新的进程直至耗尽系统资源,可以通过修改件/etc/security/limits.conf nproc限制最大打开进程数

# :是函数名
# ()是语法中的()
# { 代表代码块开始
# :是在内部执行函数
# |是把结果发给:函数执行
# & 表示放到后台执行
# } 表示函数的代码块结束
# ;命令分隔符
# :调用刚刚定义的函数

导出函数

function demo() {  echo "In demo function."; }
echo demo > demo.sh
sh demo.sh # 此时调用会报错demo not found 
export -f demo 
sh demo.sh # 此时调用会正常demo函数中的语句

shell 函数

上一篇:#极客标签周刊# - 9款HTML5实现的超酷特效


下一篇:jQuery清除浏览器cache