- 可以帶function fun() 定義控汉,也可以直接fun() 定義,不帶任何參數(shù)心铃。
#!/bin/bash
# author:菜鳥教程
# url:www.runoob.com
funWithParam(){
echo "第一個參數(shù)為 $1 !"
echo "第二個參數(shù)為 $2 !"
echo "第十個參數(shù)為 $10 !"
echo "第十個參數(shù)為 ${10} !"
echo "第十一個參數(shù)為 ${11} !"
echo "參數(shù)總數(shù)有 $# 個!"
echo "作為一個字符串輸出所有參數(shù) $* !"
}
funWithParam 1 2 3 4 5 6 7 8 9 34 73
- Shell 輸入/輸出重定向
command > file 將輸出重定向到 file译断。
command < file 將輸入重定向到 file蟹地。
command >> file 將輸出以追加的方式重定向到 file积暖。
#輸入重定向
和輸出重定向一樣,Unix 命令也可以從文件獲取輸入怪与,語法為:
command1 < file1
重定向深入講解
一般情況下夺刑,每個 Unix/Linux - 命令運行時都會打開三個文件:
標準輸入文件(stdin):stdin的文件描述符為0,Unix程序默認從stdin讀取數(shù)據(jù)分别。
標準輸出文件(stdout):stdout 的文件描述符為1遍愿,Unix程序默認向stdout輸出數(shù)據(jù)。
標準錯誤文件(stderr):stderr的文件描述符為2耘斩,Unix程序會向stderr流中寫入錯誤信息沼填。
默認情況下,command > file 將 stdout 重定向到 file括授,command < file 將stdin 重定向到 file坞笙。
如果希望 stderr 重定向到 file,可以這樣寫:
如果希望 stderr 重定向到 file荚虚,可以這樣寫:
$ command 2 > file
如果希望 stderr 追加到 file 文件末尾羞海,可以這樣寫:
$ command 2 >> file
- Here Document
- Here Document 是 Shell 中的一種特殊的重定向方式,用來將輸入重定向到一個交互式 Shell 腳本或程序曲管。
$ wc -l << EOF
welcome
to
my place
EOF
3 # 輸出結(jié)果為 3 行
$
- /dev/null 文件
- 如果希望執(zhí)行某個命令却邓,但又不希望在屏幕上顯示輸出結(jié)果,那么可以將輸出重定向到 /dev/null:
$ command > /dev/null
/dev/null 是一個特殊的文件院水,寫入到它的內(nèi)容都會被丟棄腊徙;如果嘗試從該文件讀取內(nèi)容,那么什么也讀不到檬某。
但是 /dev/null文件非常有用撬腾,
將命令的輸出重定向到它,會起到"禁止輸出"的效果恢恼。
如果希望屏蔽 stdout 和 stderr民傻,可以這樣寫:
$ command > /dev/null 2>&1
#擴展
$ command > file 2>&1
$ command >> file 2>&1
這里的&沒有固定的意思
放在>后面的&,表示重定向的目標不是一個文件,而是一個文件描述符漓踢,內(nèi)置的文件描述符如下
1 => stdout
2 => stderr
0 => stdin
換言之 2>1 代表將stderr重定向到當前路徑下文件名為1的regular
file中牵署,而2>&1代表將stderr重定向到文件描述符為1的文件(即/dev/stdout)中,
這個文件就是stdout在file system中的映射
此處&>或者>&視作整體喧半,分開沒有單獨的含義