函數
函數定義
[ function ] funname [()]
{
action;
[return int;]
}
定義時可以是function fun(),也可以直接fun(),不帶參數
傳回值不顯式傳回時,以最後一條指令運作結果作為傳回值。return後為數值,範圍0-255
帶傳回值的示例
#!/bin/bash
funWithReturn(){
echo "這個函數會對輸入的兩個數字進行相加運算..."
echo "輸入第一個數字: "
read aNum
echo "輸入第二個數字: "
read anotherNum
echo "兩個數字分别為 $aNum 和 $anotherNum !"
return $(($aNum+$anotherNum))
}
funWithReturn
echo "輸入的兩個數字之和為 $? !"
$?可以擷取到函數傳回值
函數定義必須放在腳本開始部分,所有函數必須使用前就定義
函數參數定義使用$n。也就是說$1表示第一個參數,$2表示第二個參數
#!/bin/bash
funWithParam(){
echo "第一個參數為 $1 !"
echo "第二個參數為 $2 !"
echo "第十個參數為 $10 !"
echo "第十個參數為 ${10} !"
echo "第十一個參數為 ${11} !"
echo "參數總數有 $# 個!"
echo "作為一個字元串輸出所有參數 $* !"
}
funWithParam 1 2 3 4 5 6 7 8 9 34 73
$10輸出是10。n >= 10時不能直接$n,得寫成${n}
特殊字元
$#:參數個數
$*:參數清單(字元串形式)
$$:腳本運作的最後一個程序的ID号
$!:背景運作的最後一個程序的ID号
[email protected]:和$*相同,不同的是使用時要加引号,在引号内傳回每個參數
$-:顯示Shell使用的目前選項,與set指令功能相同
$?:顯示最後指令的退出狀态,0表示沒錯誤,其他值表示有錯誤
輸入/輸出重定向
command > file:輸出到file
command < file:從file輸入
command >> file:輸出到file(append)
n > file:将檔案描述符為n的檔案重定向到file
n >> file:将檔案描述符為n的檔案重定向到file(append)
n >& m:将輸出檔案m和n合并
n <& m:将輸入檔案m和n合并
<< tag:将開始标記tag和結束标記tag之間的内容作為輸入
檔案描述符:
核心(kernel)利用檔案描述符(file descriptor)來通路檔案。檔案描述符是非負整數。打開現存檔案或建立檔案時,核心會傳回一個檔案描述符。讀寫檔案也需要使用檔案描述符來指定待讀寫的檔案。
檔案描述符 0 通常是标準輸入(STDIN),1 是标準輸出(STDOUT),2 是标準錯誤輸出(STDERR)。
重定向
一般情況下,每個 Unix/Linux 指令運作時都會打開三個檔案:
- 标準輸入檔案(stdin):stdin的檔案描述符為0,Unix程式預設從stdin讀取資料。
- 标準輸出檔案(stdout):stdout 的檔案描述符為1,Unix程式預設向stdout輸出資料。
- 标準錯誤檔案(stderr):stderr的檔案描述符為2,Unix程式會向stderr流中寫入錯誤資訊。
預設情況下,command > file 将 stdout 重定向到 file,command < file 将stdin 重定向到 file。
未完待續
轉載于:https://www.cnblogs.com/wuhuohanke/p/10082516.html