天天看點

Shell腳本學習 - 函數,輸入輸出重定向,檔案

函數

函數定義

[ 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

繼續閱讀