shell函數(shù)
死循環(huán)
whlie :
do
語句體
done
shell函數(shù)
- 什么時候用到函數(shù)
- 執(zhí)行的功能類似
- 根據(jù)實際需求 ,進行設(shè)置
- shell函數(shù)定義格式
function 函數(shù)名()
{
}
- 調(diào)用shell函數(shù)
- 函數(shù)名
- 函數(shù)參數(shù)傳遞
function test()
{
echo "$0"
echo "$1"
echo "$2"
echo "${10}"
echo "hello worid"
}
test 1 2 3 4 5 6 7 8 9 34
- 分析:當(dāng)參數(shù)作為shell函數(shù)傳遞時,當(dāng)在函數(shù)里面接收n>=10個參數(shù)時,要加上${n};
- $0不是test,而是shell文件本身
- 函數(shù)里面的$1與函數(shù)外面的$1不相同,但是函數(shù)里面的$0與函數(shù)外面的$0相同
function sum()
{
num1=$1
num2=$2
let value=num1+num2
return $value
}
sum 1 2
echo "sum=$?"
sum 2 3
echo "sum=$?"
- 結(jié)果為: sum=3,sum=5
- 分析:函數(shù)如果是return出來的結(jié)果,我們用$?接收,$?是接收最后運行的一次腳本.
- 如果return后面的值>255,那么函數(shù)運行完之后用$?接收,$?=value%256
- 怎么接收return出來的值比255大?問題解決之道:使用echo返回出來,函數(shù)外使用變量接收,value=
函數(shù)名,從而value進行操作- 實際上echo是臨時保存函數(shù)的結(jié)果集
function test()
{
echo 513
}
value=`test`
echo "test函數(shù)的返回值${value}"
- shell函數(shù)總結(jié):
- function函數(shù)可寫可不寫
- shell 函數(shù)可以有return,也可以沒有return
- 如果是return出來的結(jié)果必須要用$?接收
- 如果是echo保存的結(jié)果集,必須要用value=
test取結(jié)果接收- 函數(shù)里面可以嵌套,可以內(nèi)嵌創(chuàng)建函數(shù)
a()
{
b()
{
}
b
}
a
a()
{
b()
{
echo "==b=="
}
b
}
a
a()
{
b()
{
echo "==b=="
}
}
a
b
6.條件函數(shù)
a()
{
value=9
if [ $value -eq 9 ]
then
b()
{
echo "==b=="
}
else
c()
{
echo "==c=="
}
}
a
b
- 結(jié)果為==b==
- 分析:函數(shù)b和函數(shù)c在什么情況下可以調(diào)用? 先運行函數(shù)a,因為a中有函數(shù)b和c的實現(xiàn).在if條件成立時,實現(xiàn)函數(shù)b的定義,其他情況下,實現(xiàn)函數(shù)c的定義