shell函数
一、shell函数
函数可以让我们将一个复杂功能划分成若干模块,让程序结构更加清晰,代码重复利用率更高。像其他编程语言一样,Shell 也支持函数。Shell 函数必须先定义后使用。
【1】shell函数的格式
(1)定义一个函数
[function] fun_name () {
命令序列
[retrun n] ########返回的是状态码
[echo n] ######返回的是值
}
fun_name #########调用函数
Shell 函数返回值只能是整数,一般用来表示函数执行成功与否,0表示成功,其他值表示失败。
如果 return 其他数据,比如一个字符串,往往会得到错误提示:“需要数字参数”。
调用函数只需要给出函数名,不需要加括号。如下所示:
[root@localhost opt]# vim hanshu1.sh
#!/bin/bash
function sum(){
read -p "请输入加数:" num1
read -p "请输入被加数:" num2
sum=$(expr $num1 + $num2)
[return abc] #####中括号表示可有可无
[echo $sum]
}
sum
#函数返回值在调用该函数后通过 $? 来获得
echo "返回值是:$?"
echo "和是:$sum"
[root@localhost opt]# sh hanshu1.sh
请输入加数:45
请输入被加数:54
hanshu1.sh: 第 6 行:return: abc: 需要数字参数
返回值是:255 ####说明返回值是错的
和是:99
由于shell状态码最大是255,所以当返回值大于255时会出错
(2)全局声明函数
如果你希望直接从终端调用函数,可以将函数定义在主目录下的 .profile 文件,这样每次登录后,在命令提示符后面输入函数名字就可以立即调用
[root@localhost ~]# vim .bashrc (局部声明)
[root@localhost ~]# source .bashrc (更新)
[root@localhost ~]# vim /etc/profile
pathmunge () {
case ":${PATH}:" in
*:"$1":*)
;;
*)
if [ "$2" = "after" ] ; then
PATH=$PATH:$1
else
PATH=$1:$PATH
fi
esac
}
[root@localhost ~]# source /etc/profile