--------------------------------------------------------
函數返回值的問題
1.默認的退出狀態
函數的最後一條命令
返回退出狀態
因爲函數最後一條命令的狀態可能會影響前面執行的狀態
所以不建議使用
2.使用return
使用return 的致命問題是返回值不能超過255(0~255)
3.直接函數輸出
相當於在最後加一個輸出語句echo
-----------------------------------------------------------------------------
函數中變量:全局變量,局部變量
#!/bin/bash
# 測試函數返回值
function fun1() {
echo "abcd"
ls -l adasdfas
}
function fun2() {
ls -l adasdfas
echo "abcd"
}
echo "Test the fun1:"
fun1
echo "Function fun1 exit status: $?"
echo "------------------------------------"
echo "Test the fun2:"
fun2
echo "Function fun2 exit status: $?"
一般不要這樣做,這樣做,函數最後一條命令,會掩蓋函數中的其它錯誤
2、使用return
function fun3() {
read -p "Enter a value: " value
echo "Doubling the value"
return $[$value*2]
}
return 返回值其範圍是: 0-255
3、函數輸出(相當於在最後加一個輸出語句)
function fun4() {
read -p "Enter a value: " value
echo "Doubling the value: $[$value*2]"
}
函數中變量:全局變量、局部變量
全局變量:在shell中都有效的變量,但有時在做函數時不經意間會修改了全局的值,
從而導致程序出現問題
局部變量:一般來講用在函數中
使用方法:local 變量名
函數中儘可能使用局部變量
注意:無論是函數內外聲明的變量,都是全局變量!這點和c不同,
c中,函數中的變量在調用函數結束後,其生命週期就結束了。
而shell中,無亂在哪裏聲明的變量,都是全局生存的。
這就是關鍵字local的意義.