Bash 指令稿入門
Alex Scriven
Data Scientist
在 Bash 指令稿中,程式有三個「串流」:
預設情況下,這些串流會從終端機讀入並輸出到終端機。
你也可能在呼叫指令稿時看到 2> /dev/null;將 STDERR 重新導向丟棄。(1> /dev/null 會是 STDOUT)
以下用先前建立的管線,圖示化呈現標準串流:

想像一個含 3 行資料的文字檔(sports.txt)。
football
basketball
swimming
指令 cat sports.txt 1> new_sports.txt 示範了從檔案讀取並將 STDOUT 寫到新檔。試著 cat new_sports.txt 看看結果。
football
basketball
swimming
Bash 指令稿的一個關鍵概念是「引數」
Bash 指令稿可以在執行呼叫後加一個空格,接著帶入要在內部使用的引數。
$ 標記取用各引數:第一個是 $1,第二個是 $2,依此類推。$@ 與 $* 會給出 ARGV 中的所有引數。$# 會給出引數的數量。看一個指令稿範例(args.sh):
#!/usr/bash
echo $1
echo $2
echo $@
echo "There are " $# "arguments"
現在執行 bash args.sh one two three four five
one
two
one two three four five
There are 5 arguments
#!/usr/bash
echo $1
echo $2
echo $@
echo "There are " $# "arguments"
Bash 指令稿入門