// 函數 輸入輸出重定向 一、函數 function hello(){ echo '1111' } ------- hello hello(){ // function 能夠省略 echo '2222' } hello ------- hello(){ return 11 } hello echo $? // 獲取函數返回的值 ------- function hello(){ echo $1 echo $2 echo $3 echo "第十個參數${10}" echo "參數個數${#}" echo "輸出全部參數${*}" echo "輸出全部參數${@}" } hello 1 2 3 4 5 ------- 二、輸入輸出重定向 > >> < 輸入重定向 << cat < ./1.txt // 把1.txt的內容截取出來 標準輸入文件(stdin) 0 標準輸出文件(stdout) 1 標準錯誤文件(stderr) 2 重定向解釋: 2>&1 // 標準錯誤輸出重定向到標準輸出 /dev/null // 空設備 至關於一個黑洞 吞噬一切信息 // 標準輸出 echo 123 > ./1.txt 等同於 echo 123 1> ./1.txt // 標準錯誤輸出 echo 123 2> ./1.txt 把標準錯誤輸出重定向到1.txt ./2.sh hello // hello 會報錯 走標準錯誤輸出 date ./2.sh > 1.txt // 會看到報錯直接在終端上顯示,未輸出到1.txt,由於這裏是標準輸出,沒有寫標準錯誤輸出重定向到1.txt ./2.sh 1> 1.txt 2> ./1.txt 這樣就把標準錯誤輸出到了1.txt 可是有個問題,這個寫法至關於,打開了兩次1.txt, 標準輸出被標準錯誤輸出給覆蓋了 ./2.sh 1> 1.txt 2>&1 // >& 至關於對後面1即標準輸出的引用,而後這句話的意思是標準輸出重定向到1.txt,標準錯誤輸出也重定向到1.txt,所以 ./1.txt裏會顯示 ./2.sh:行1: t: 未找到命令 2019年 03月 30日 星期六 15:29:38 CST ./2.sh 1> 1.txt 2>/dev/null // 這裏標準輸出重定向到1.txt, 標準錯誤輸出重定向到空設備,即不輸出錯誤信息,這時./1.txt裏會顯示 2019年 03月 30日 星期六 15:40:58 CST 三、文件引用 source ./xx.sh 或者 . ./1.sh