shell編程之函數講解

在shell腳本中,用戶可以自定義函數。

shell函數定義語法規則

語法規則1
name ()
{
函數語句塊
}

語法規則2
function name ()
{
函數語句塊
return 語句
}
其中,function指示後續的代碼是一個函數,function關鍵字可加可不加,name是函數名稱,函數名之後有(),括號內不需要任何內容,包括空格,花括號內是函數體,函數體中可以有return語句,也可以沒有return語句,若沒有指定return語句,函數的退出狀態碼是函數中最後一條命令返回的退出狀態碼。

執行函數只需要在函數體外調用函數名,若需要傳參,則在函數名之後添加參數即可(此時在函數體內應通過$n的形式來獲取參數的值),示例如下(shell腳本名爲function.sh):

1)沒有添加return語句,直接將結果打印輸出

#!/bin/bash
sum=0
add ()
{
	if (( $# < 2 ));then
		echo "please input two numbers!"
		exit
	fi
	sum=$(($1 + $2))
	echo $sum
}
add $1 $2

執行shell腳本
在這裏插入圖片描述
或者直接使用函數退出狀態碼

#!/bin/bash
add ()
{
	if (( $# < 2 ));then
		echo "please input two numbers!"
		exit
	fi
	echo $(($1 + $2))
}
result=`add $1 $2`
echo "Sum is "$result

在這裏插入圖片描述
這裏 把函數當作一個命令,用反引號來獲取函數最後一條命令(最後一條命令需要用echo語句)的退出狀態碼,並賦值給自定義變量。

2)添加return語句

#!/bin/bash
sum=0
function add ()
{
	if (( $# < 2 ));then
		echo "please input two numbers!"
		exit
	fi
	sum=$(($1 + $2))
	return $sum
}
add $1 $2
echo "Sum is "$sum

執行shell腳本結果如下:
在這裏插入圖片描述
還可以這樣編寫:

#!/bin/bash

function add ()
{
	if (( $# < 2 ));then
		echo "please input two numbers!"
		exit
	fi
	return $(($1 + $2))
}
add $1 $2
echo "Sum is $? "

腳本執行結果
在這裏插入圖片描述
沒有定義額外的變量,同樣能夠實現兩數相加的功能。
這裏使用$?來獲取調用函數後函數的返回值。使用$?來獲取返回值的時需要注意,$?的應用主要是判斷前一個命令是否執行正確,若在調用函數與輸出結果之間有其他的命令執行,此時$?獲取不到函數的返回值,示例如下:

#!/bin/bash

function add ()
{
	if (( $# < 2 ));then
		echo "please input two numbers!"
		exit
	fi
	return $(($1 + $2))
}
add $1 $2
echo "two numbers add..."
echo "Sum is $? "

shell執行
在這裏插入圖片描述
這裏的sum is 0 中的0表示上一個命令執行成功。並沒有獲取到函數的返回值,因此,儘量使用變量的形式來獲取函數返回值。
⚠️
1)函數在使用前必須先定義
2)當傳入的參數大於等於10個時,應使用${n}來獲取參數,n>=10

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章