linux學習(九) shell指令碼(6)

2021-06-19 12:41:02 字數 2077 閱讀 1399

建立函式

1.基本指令碼函式

1.1建立函式

方式一:使用關鍵字 function,後跟**塊的函式名。

function name

name名稱需要唯一在乙個指令碼中,

方式二:

name()

函式引用,直接呼叫函式名即可。

函式定義不一定位於shell指令碼的起始部分,但應該注意,如果在函式定義之前使用函式,會受到錯誤資訊。

1.2返回值

(1)預設退出狀態

預設情況下,函式的退出狀態是函式的最後一條命令返回的退出狀態。函式執行完畢之後可以使用標準變數$? 來獲得函式的退出狀態。

(2)使用return命令

bash shell使用return命令以特定退出狀態退出函式。return命令可以使用單個整數值來定義函式退出狀態,提供了一種通過程式設計設定函式退出狀態的簡單方法:

function fun1

fun1

echo "the new value is : $?"

上例中,將value乘2後的結果作為結束狀態返回,通過$?獲得結束狀態,也就是希望得到的結果。

需要注意:

(a)在函式完成之後盡快提取返回值,因為再次執行其他命令會覆蓋返回值

echo -n "adding 10 and 15":

value=`additem 10 15`

echo $value

函式的變數$0, $1, $2 等等,不同於指令碼主**的 $0, $1, $2 等等。如果想在函式中使用命令列引數送來的值,需要在呼叫該函式時,手動傳遞這些資料。

mulitem ()

if [ $# -eq 2 ]

then

value=`mulitem $1 $2`

echo result is $value

fi./test.sh 3 4

(2)在函式中處理變數

全域性變數

如果指令碼的主體定義了全域性變數,則在函式內部可以獲取這個變數的值;如果在函式內部定義了全域性變數,指令碼的主體**也可以獲取該變數的值。

預設情況下,指令碼中定義的變數都是全域性變數。在函式外部定義的變數,在函式內部仍能訪問。

區域性變數

函式內部使用的變數為區域性變數,這只需要在變數宣告前加上local關鍵字 :local value

也可以給區域性變數賦值語句加上local關鍵字: local value=$[$value + 2]

關鍵字local確保變數僅在函式內部使用。如果指令碼在函式外部有同名變數,則shell能區分開這兩個變數。在函式內部操作區域性變數時,函式外部的同名變數不受影響。

4.陣列變數和函式

5.使用庫檔案

可以將乙個shell指令碼中定義多個函式和變數,作為庫檔案;這樣其他shell指令碼可以直接引用該庫檔案。如:

test.sh

#!/bin/bash

#test bash shell

mulitem ()

additem ()

test1.sh

#!/bin/bash

. ./test.sh

#相當於引用庫, 注意前面的點操作符+庫檔案的路徑

value1=`additem 1 3`

value2=`mulitem 3 4`

echo "the additem result is : $value1"

echo "the mulitem result is : $value2"

6.在shell終端中直接使用函式:

可以在命令列中定義函式,此次終端會話中,該函式有效,如果關閉了終端,則函式失效。

為了下次開啟終端仍然能夠使用函式,則可以

1)將函式定義寫在.bashrc中,這樣每次開啟shell終端之後,仍然能夠使用該函式。

jason@ubuntu:~$ function additem

jason@ubuntu:~$ additem 10 3

13這樣要求,每條語句後面要有分號隔開;

jason@ubuntu:~$ function mulitem

jason@ubuntu:~$ mulitem 3 4

12

linux筆記九 shell 指令碼

shell script 是利用 shell 的功能所寫的乙個 程式 program 這個程式是使用純文本文 件,將一些 shell 的語法與指令 含外部指令 寫在裡面,搭配正規表示法 管線命令與資料流重 導向等功能,以達到我們所想要的處理目的。利用test指令的測試功能 使用判斷符號 中括號的使用...

Shell 指令碼學習筆記九 Shell函式

函式的定義格式 function funname 1 可以帶function fun 定義,也可以直接fun 定義,不帶任何引數 2 引數返回,可以顯示加 return 返回,如果不加,將以最後一條命令執行結果,作為返回值。return後跟數值n 1 沒有 return 語句的函式 demofun ...

Linux學習(Shell指令碼)

bin bash 必須的,指出shell的型別 注釋 變數控制 vi mkdir.sh bin bash this is mkdir cd home mkdir shelltest echo shelltest is created.將檔案賦予可執行的許可權 指令碼檔案 注意 1 檔名 在當前目錄下...