一、如何在Shell中定义函数语法
#正规写法 function 函数名(){ 命令 } #简写 函数名(){ 命令 }
二、在Shell中调用函数
定义的函数必须在脚本中引用才会生效,引用函数时只需要直接使用函数名即可,可以把函数名理解成一条命令
#定义一个函数名为name并引用,执行脚本后会输出"My name is Tom", cat function.sh #!/bin/bash name(){ echo "My name is Tom" } name
三、函数的位置参数
在函数中使用位置变量$1、$2进行传参时需要注意$1不再是运行脚本时所带的$1,而是在引用函数时函数后面的参数,示例
cat /function.sh wc(){ num=0 while read line do let num=$num+1 done < $1 } # wc /etc/passwd #上面的$1不是./function.sh $1中的$1,而是wc /etc/passwd中的那个/etc/passwd文件 # wc $1 #如果这样写的话,$1则是function.sh $1里的那个$1
四、Shell函数的返回值
函数使用return来定义返回值,0为正常,也是默认值,非0则有错。如果没有定义return则以最后一条命令的运行结果作为返回码,也就是$?。示例:
在一个脚本中定义的函数只能在该脚本中调用,不能跨脚本。如果多个脚本要调用同一个功能的函数的话难道要定义多次吗?其实不用,可以定义一个函数库文件,然后在每个脚本中引用该函数库即可。这个可以参考系统默认的一些启动脚本,都会在脚本最开始运行一次functions库文件来调用函数
发表评论: