建立函式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 檔名 在當前目錄下...