函数两种命名格式 如下,第一种是带() 第二种是不带()的
第一种小括号的
函数名(){
.......
commend
.......
}
第一种不带小括号的
function 函数名{
.......
commend
.......
}
函数的传递参数
int example_1(int arg1,int arg2)
{
arg1 = arg2
......
......
return null
}
举例
int num1=10;
int num2=20;
函数调用形式一:int num3=example_1(num1,num2);
函数调用形式二:int num4;
num4=example_1(num1,num2);
shell中传参
function name
{
echo "Hello $1"
echo "Hello $2"
}
#调用方式
name LIly Allen
编写 calcut.sh 内容如下:
#!/bin/bash
function calcu
{
case $2 in
+)
echo "`expr $1 + $3`"
;;
-)
echo "`expr $1 - $3`"
;;
\*)
echo "`expr $1 \* $3`"
;;
/)
echo "`expr $1 / $3`"
;;
esac
}
calcu $1 $2 $3
执行 ./calcut.sh 11 + 22 结果如下
~:$ ./calcut.sh 11 + 22
33
函数的返回值
使用return返回值的时候 只能返回 1-255的整数
函数使用return返回值,通常只是用来提供其它地方调用获取状态,因此通常仅返回0或者1;0标示成功,1标示失败.
使用echo可以返回任何字符串结果.
通常用于返回数据,比如一个字符串或者列表值
函数的返回方式
方法一 return
方法二 echo
示例 编写 getuser.sh 查询用户列表
#!/bin/bash
function get_user
{
users=`cat /etc/passwd | cut -d: -f1`
echo $users
}
user_list=`get_user` #将函数变成结果集使用
for u in $user_list
do
echo $u
done
执行 结果
~$ ./getuser.sh
root
daemon
bin
sys
sync
games
man
lp
mail
news
uucp
proxy
sshd
.....
局部变量和全局变量
不做特殊说明,shell中的变量都是全局变量 ,建议在大型脚本程序函数中,慎用全局变量
定义局部变量
定义局部变量时,使用local关键字
函数内和外部若存在同名变量,则函数内部变量覆盖外部变量
示例 编写 test.sh文件
#!/bin/bash
var1="Hello World"
function test
{
local var1=87
echo $var1
}
test
echo $var1
执行 结果
~$ ./test.sh
87
Hello World
函数库:
定义一个函数库,该函数库实现以下几个函数:
使用方法
假如编写 myfunction.sh 里面包含的都是 各种function
那我们想使用myfunction.sh的时候 直接 可以使用
#!/bin/bash
. myfunction
# 可以直接使用 myfunction.sh 中的函数
经验之谈
1.库文件的后缀是任意的,但一般使用 .lib
2.库文件通常没有执行选项
3.库文件无需和脚本同级目录,只需在脚本中引用时指定
4.第一行一般使用#!/bin/echo,输出警告信息,避免用户执行