shell學習筆記之八(函式)

2021-07-02 04:03:33 字數 2546 閱讀 3657

函式

定義:1、無返回值

#function為關鍵字,function_name為函式名

function function_name()

省略關鍵字function,效果一樣

function_name()

例:1、簡單函式宣告和呼叫

#!/bin/bash

function sayhello()

sayhello

注意:1、sayhello呼叫的時候沒有(),sayhello()這樣的呼叫會出錯。

2、如果先呼叫再宣告,則呼叫和宣告之間不能有其他語句

2、計算檔案的行數

#!/bin/bash

if [[ $# -lt 1 ]];then

echo "please input a filename."

return

fifile=$1

countline

function countline()

2、函式的返回值

return

獲取返回值的主要方式是$?

例:#檢測檔案是否存在

#!/bin/bash

file=$1

check

if [ $? -eq 0 ];then

echo "$file exists."

else

echo "$file doesn't exist."

fifunction check()

3、帶引數的函式

1、位置引數

這個和高階語言不一樣,在函式宣告裡沒有指定引數,而是直接在函式體裡使用,呼叫的時候直接傳入引數即可

例:1、檢測檔案是否存在

#!/bin/bash

check $1 #這裡不再使用file變數

if [ $? -eq 0 ];then

echo "$1 exists."

else

echo "$1 doesn't exist."

fifunction check()

2、計算兩數之和

#!/bin/bash

function add()

add $1 $2

echo "$?"

2、指定位置引數值

使用set內建命令給指令碼指定位置引數的值(又叫重置)。一旦使用set設定了傳入引數的值,指令碼將忽略執行時傳入的位置引數(實際上是被set

重置了位置引數的值)

例:#!/bin/bash

set 1 2 3 4

count=1

for var in $@

doecho "here \$$count is $var"

let "count++"

done

注意:輸入時不管有多少引數都重置為四個引數。

如:. ./function03.sh a b c d e f

結果:here $1 is 1

here $2 is 2

here $3 is 3

here $4 is 4

注意:有什麼意義?

3、移動位置引數

回顧:shift,在不加任何引數的情況下,這個命令可以將位置引數向左移動一位。

例:#!/bin/bash

until [ $# -eq 0 ]

doecho "now \$1 is:$1,total paramert is:$#"

shift

done

注意:活用位置引數,

$@/$*:所有引數

$1..$n:第n個引數,當n大於10時,要將n用()括起來

$0:指令碼本身

當用『.』執行指令碼時為bash

當用bash執行指令碼時返回的檔名

當用./scriptname執行時返回./scriptname

$#:所有引數

擴充套件指定左移的位數,shift n

例:#!/bin/bash

echo "$0"

until [ $# -eq 0 ]

doecho "now \$1 is:$1,total paramert is:$#"

shift 2

done

注意:如果輸入命令時指定了奇數個引數,則指令碼會陷入死迴圈。

4、函式庫

為了和普通函式區別,在實踐中,建議庫函式使用下劃線(_)開頭

載入庫函式:

1、使用"點"(.)命令

2、使用source命令

例:1、建立函式庫

實際上就是寫乙個都是函式的指令碼檔案

例:建立庫lib01.sh

function _checkfileexist()

2、使用

#!/bin/bash

#source ./lib01.sh

. ./lib01.sh

_checkfileexist $1

系統函式庫:

/etc/init.d/functions(我的系統是ubuntu,沒看到這個檔案)

乙個27個函式

shell指令碼之函式(八)

簡單呼叫函式的例子 demofun echo 開始測試函式呼叫 demofun 下面定義乙個帶有return語句的函式 bin bash author 菜鳥教程 url www.runoob.com funwithreturn funwithreturn echo 輸入的兩個數字之和為 輸出類似下面...

Shell學習筆記 函式

1.定義函式 function funcname function 關鍵字有沒有都行.2.函式呼叫 funcname 直接寫函式名就可以呼叫函式了 如果有引數的話可以放在函式名的後邊,以空格隔開 funcname arg1 arg2 arg3.這些引數在函式定義內部的使用是通過 1,n表示,最多到9...

Shell學習之函式

和c語言類似,shell 中也有函式的概念,但是函式定義中沒有返回值也沒有引數列表。例如 bin sh foo echo start fooecho end 注意函式體的左花括號 寫在同一行,命令末尾必須有分號 但,不建議將函式定義寫至一行上,不利於指令碼閱讀。在定義foo 函式時並不執行函式體中的...