函数,函数是什么,函数是一些命令的集合,使用一个名称做代表,称为函数名称,函数名称的命名规范和变量相同
函数的用法
函数的语法
语法一:
function 函数名称 ()
{
命令区域
}
语法2
关键字function 可以省略,以下写法也可
函数名称()
{
命令区域
}
语法3
如果使用关键词 function ,那么,函数名称后面的小括号可以省略
function 函数名称
{
命令区域
}
调用函数的方法是直接写出函数名称即可
如果要传入参数,可把参数选项写在函数名称之后,
函数名称 参数1 参数2 参数3
例子:
getline() ##定义函数getline,用来计算文件的行数
{
local i=0
while read line
do
let ++i
done < $file
echo "$file 共有$i行"
}
##i代表已计算的行数,线归零,local用来设定变量i 是getline函数中专有的变量,不影响脚本其他地方的i变量,使用while循环,自变量$file指定的文件读取每一行,每读一行,变量i的值就加1
file=$1 #使用转向输入,让read能由$file读取数据
getline#调用getline函数,这时bash会跳到{}内,去执行getline内的命令区域
echo 'getline 执行完毕'
执行完成后,回到这里继续下一道指令
注意:在调用函数之前,一定要实现定义函数,否则会出现错误
定义函数后,也可以取消函数,unset -f
unset -f getline
函数的结束状态
执行函数时,函数中最后一个命令的传回值代表函数的结束状态,执行函数,如果遇到return命令,就立即结束,回到调用函数的下一个命令,此时函数的传回值为0
例子:
getline()
{
local i=0
while read line
do
let ++i
if (( $i > 10 ));then
echo "已经超过10行,不在继续读取"
return
fi
done < $file
echo "$file 共有$i行"
}
file=$1
getline
echo $?
echo 'getline 执行完毕'
[root@localhost tmp]# bash test.sh 1
已经超过10行,不在继续读取
0
getline 执行完毕
return 命令也可以指定不同的传回值,如
return 3
[root@localhost tmp]# bash test.sh 1
已经超过10行,不在继续读取
2
getline 执行完毕
不同的传回值要如何引用,看脚本设计的安排,例如,函数的传回值是3,就执行某些命令
例子:
getline()
{
local i=0
while read line
do
let ++i
if (( $i > 10 ));then
echo "已经超过10行,不在继续读取"
return 2
fi
done < $file
echo "$file 共有$i行"
}
file=$1
getline
if [ $? -eq 2 ];then
echo '行数太多,放弃读取'
else
echo 'getline 执行完毕'
fi
函数与变量的作用范围
函数仅在定义的shell环境中有效,bash执行函数时,并不会另外在开启一个子shell,如果要传递函数给子shell环境使用,可使用内置命令 export 和-f 选项
语法:export -f 函数名称
export -f getline
这样,getline就变成环境变量的一部分,(以函数型存在),可供子shell的脚本调用
位置参数
传递参数
函数(1)
原创
©著作权归作者所有:来自51CTO博客作者风光坏家伙的原创作品,如需转载,请与作者联系,否则将追究法律责任
提问和评论都可以,用心的回复会被更多人看到
评论
发布评论
相关文章
-
javascript函数1
javascript笔记
javascript 干货 -
虚函数1
虚函数联系到多态,多态联系到继承。所以本文中都是在继承层次上做文章。没了
虚函数 多态 多态性