(创建于2018/2/1)
1.简单的一个函数
1 #!/bin/bash
2
3 function myfunc{ //注意这里没有(),函数名何{之间没有空格导致出错,空格一定要有
4 echo "myfunc"
5 }
6 myfunc //调用函数
创建函数的格式,有两种:
function name {
commands
}
或
name() {
commands
}
执行后:
tabstop=8root@iZbp11v3y27wpf6mglp2glZ:/user/renzhenming/shell# ./16.sh
./16.sh: line 4: syntax error near unexpected token `echo'
./16.sh: line 4: ` echo "myfunc"'
错在哪里?注意myfunc函数和后边的大括号间需要有空格
正确写法:
#!/bin/bash
function myfunc {
echo "myfunc"
}
myfunc
最好这样,换行防止错误
#!/bin/bash
function myfunc
{
echo "myfunc"
}
myfunc
2.函数重名,也是定义函数的两种方式
1 #!/bin/bash
2
3 function myfunc //去掉function会报错 myfunc: command not found
4 {
5 echo "myfunc"
6 }
7 myfunc
8
9 myfunc() //定义了一个和上边函数同名的函数,区别在于,这里没有使用function 关键字,还多了一个()
//这是两种定义函数的方式
10 {
11 echo "myfunc2"
12 }
13
14 myfunc
执行结果
tabstop=8root@iZbp11v3y27wpf6mglp2glZ:/user/renzhenming/shell# ./16.sh
myfunc
myfunc2
去掉第二个同名函数的小括号
1 #!/bin/bash
2
3 function myfunc
4 {
5 echo "myfunc"
6 }
7 myfunc
8
9 myfunc
10 {
11 echo "myfunc2"
12 }
13
14 myfunc
结果
tabstop=8root@iZbp11v3y27wpf6mglp2glZ:/user/renzhenming/shell# ./16.sh
myfunc
myfunc
myfunc2
myfunc
3.函数传参和返回值
1 #!/bin/bash
2
3 function myfunc
4 {
5 echo $[ $1 + $2 ]
6 }
7
8 value=$(myfunc 10 90)
9 echo "value :$value"
结果
100
4.函数调用局部变量和引入函数库
16.sh
1 #!/bin/bash
2 source ./17.sh //source关键字引入函数库文件
3 //. .17.sh //这种写法也同样是引入库文件,“.”就代表source关键字
4 function myfunc
5 {
6 echo $beaty //使用局部变量
7 }
8 beaty=12
9
10 myfunc
11
12 echo "add value:$(add 10 30)" //调用库文件中的函数
17.sh
1 #!/bin/bash
2
3 function add()
4 {
5 echo $[ $1 + $2 ]
6 }
执行结果
tabstop=8root@iZbp11v3y27wpf6mglp2glZ:/user/renzhenming/shell# ./16.sh
12
add value:40