(創(chuàng)建于2018/2/1)
1.簡單的一個(gè)函數(shù)
1 #!/bin/bash
2
3 function myfunc{ //注意這里沒有(),函數(shù)名何{之間沒有空格導(dǎo)致出錯(cuò)形耗,空格一定要有
4 echo "myfunc"
5 }
6 myfunc //調(diào)用函數(shù)
創(chuàng)建函數(shù)的格式哥桥,有兩種:
function name {
commands
}
或
name() {
commands
}
執(zhí)行后:
tabstop=8root@iZbp11v3y27wpf6mglp2glZ:/user/renzhenming/shell# ./16.sh
./16.sh: line 4: syntax error near unexpected token `echo'
./16.sh: line 4: ` echo "myfunc"'
錯(cuò)在哪里?注意myfunc函數(shù)和后邊的大括號間需要有空格
正確寫法:
#!/bin/bash
function myfunc {
echo "myfunc"
}
myfunc
最好這樣激涤,換行防止錯(cuò)誤
#!/bin/bash
function myfunc
{
echo "myfunc"
}
myfunc
2.函數(shù)重名拟糕,也是定義函數(shù)的兩種方式
1 #!/bin/bash
2
3 function myfunc //去掉function會報(bào)錯(cuò) myfunc: command not found
4 {
5 echo "myfunc"
6 }
7 myfunc
8
9 myfunc() //定義了一個(gè)和上邊函數(shù)同名的函數(shù),區(qū)別在于倦踢,這里沒有使用function 關(guān)鍵字送滞,還多了一個(gè)()
//這是兩種定義函數(shù)的方式
10 {
11 echo "myfunc2"
12 }
13
14 myfunc
執(zhí)行結(jié)果
tabstop=8root@iZbp11v3y27wpf6mglp2glZ:/user/renzhenming/shell# ./16.sh
myfunc
myfunc2
去掉第二個(gè)同名函數(shù)的小括號
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
結(jié)果
tabstop=8root@iZbp11v3y27wpf6mglp2glZ:/user/renzhenming/shell# ./16.sh
myfunc
myfunc
myfunc2
myfunc
3.函數(shù)傳參和返回值
1 #!/bin/bash
2
3 function myfunc
4 {
5 echo $[ $1 + $2 ]
6 }
7
8 value=$(myfunc 10 90)
9 echo "value :$value"
結(jié)果
100
4.函數(shù)調(diào)用局部變量和引入函數(shù)庫
16.sh
1 #!/bin/bash
2 source ./17.sh //source關(guān)鍵字引入函數(shù)庫文件
3 //. .17.sh //這種寫法也同樣是引入庫文件,“.”就代表source關(guān)鍵字
4 function myfunc
5 {
6 echo $beaty //使用局部變量
7 }
8 beaty=12
9
10 myfunc
11
12 echo "add value:$(add 10 30)" //調(diào)用庫文件中的函數(shù)
17.sh
1 #!/bin/bash
2
3 function add()
4 {
5 echo $[ $1 + $2 ]
6 }
執(zhí)行結(jié)果
tabstop=8root@iZbp11v3y27wpf6mglp2glZ:/user/renzhenming/shell# ./16.sh
12
add value:40