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號

$@:和$*相同,不同的是使用時要加引號,在引號內返回每個參數

$-:顯示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。

 

 

未完待續

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM