一、函數的定義與調用
在Shell腳本中,函數是一種可重用的代碼塊,它的定義與調用方法相對靈活,本小節將從函數的定義與調用兩方面展開講解。
函數定義
function 函數名(){
命令序列
}
或
函數名(){
命令序列
}
函數的定義關鍵字可以省略,兩種定義方式的效果相同。
函數調用
函數名 參數列表
調用函數時,參數列表可以為空或者包含多個參數,參數間以空格隔開。調用函數的時候,需要在函數名後緊跟一對圓括號進行調用,以示當前語句為函數調用語句。
二、函數內部變量與返回值
函數內部可以使用變量,這些變量默認是全局變量,但是在函數內部定義的局部變量需要用local命令進行聲明。函數的返回值可以是數字、字符串或者數組。
聲明內部局部變量
function 函數名(){
local 局部變量名
命令序列
}
返回值
return 值
除了使用return命令返回值以外,還可以將值打印到標準輸出中,通過命令替換的方式獲得返回值(命令替換的語法是反引號或者$())。
示例代碼:
function add(){
((sum=$1+$2))
echo $sum
}
result=`add 10 20`
echo $result
三、函數示例
以下代碼實現了一個簡單的計算器,用函數的方式實現了四則運算功能,並增加了異常處理(例如除數為零等情況)。
function add(){
((sum=$1+$2))
echo $sum
}
function substract(){
((result=$1-$2))
echo $result
}
function multiply(){
((result=$1*$2))
echo $result
}
function divide(){
if [ $2 -eq 0 ]; then
echo "Divisor cannot be zero!"
exit 1
fi
((result=$1/$2))
echo $result
}
read -p "請輸入操作數1: " num1
read -p "請輸入操作數2: " num2
read -p "請輸入運算符(+,-,*,/): " operator
case $operator in
+)
add $num1 $num2;;
-)
substract $num1 $num2;;
\*)
multiply $num1 $num2;;
/)
divide $num1 $num2;;
*)
echo "Invalid operator!";;
esac
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/245577.html