Shell Script - 基礎
將指令寫成檔案,即可讓乏味的重複性工作變得輕鬆。
將命令 Kernel 做事的指令寫成一個檔案,就叫做 Shell Script。
介紹
Shell 是一種讓使用者可以和作業系統 Kernel(核心用來控制 CPU、記憶體、硬碟等硬體)互動溝通的橋樑。Shell Script 主要是使用在 Linux 和 MacOS 等 Unix-like 作業系統的自動化操作指令的程式語言。
Hello World
建立 .sh 為副檔名的檔案,並賦予其執行權限。
1 | # 建造檔案 |
實作 Hello World! 將以下指令寫入指令檔。
1 | # 宣告使用 /bin/bash |
執行指令檔案
1 | ./demo.sh |

恭喜你已完成第一隻 Shell Script!
變數
定義變數時,開頭不用給予 $ 符號但使用變數時就需加上 $。並且注意 = 前後不能有空白。
1 | #!/bin/bash |
雙引號 "" 內容中的特殊字元不會被忽略,而單引號 '' 中的所有特殊字元將被忽略。也可使用 \ 跳脫符號將之後的一個字元將被視為普通字串。
1 | #!/bin/bash |
也可使用花括弧${}來將變數包起來,可以了解變數的使用範圍。
1 | #!/bin/bash |
運算
運算符號需用 (()) 或 $(()) 包起來,前者在於在於會將計算結果回傳至原變數中(注意放入多個變數則不會運作)**,後者則是將計算結果回傳至指定變數中(可放置多個變數)**。
1 | #!/bin/bash |
判斷式
Shell 的判斷式有個潮爆了的特型,那就是結尾都是開頭的顛倒!
Ex: if...fi、case ... esac…
先了解比對語法:
| 語法 | 代表意義 |
|---|---|
| -eq/== | 兩數值相等 (equal) |
| -ne/!= | 兩數值不等 (not equal) |
| -gt | n1 大於 n2 (greater than) |
| -lt | n1 小於 n2 (less than) |
| -ge | n1 大於等於 n2 (greater than or equal) |
| -le | n1 小於等於 n2 (less than or equal) |
if…fi
判斷條件放置於[]中,前後須留白。
1 | #!/bin/bash |
case…esac
1 | #!/bin/bash |
迴圈
跟大多數語言一樣,均可用 continue(省略後續)、break(結束迴圈)。
若是不小心進入無窮迴圈,可用 ^C 結束程式。
for
1 | #!/bin/bash |
while
條件成立會持續執行。
1 | #!/bin/bash |
until
條件不成立會持續執行。
1 | #!/bin/bash |
特殊變數
可以在執行命令檔案時,帶入參數並且應用。
使用方式:
| 指令 | 意義 |
|---|---|
| $0 | 目前的檔案檔名 |
| $n | n 從 1 開始,代表第幾個參數 |
| $# | 傳遞到程式或函式目前有幾個參數 |
| $* | 傳遞到程式或函式所有參數 |
| $@ | 類似 $* 但是在被雙引號包含時有些許不同 |
| $? | 上一個指令退出狀態或是函式的返回值 |
| $$ | 目前 process PID |
1 | ./demo.sh A B |
1 | #!/bin/bash |
執行結果就由各位自行去看囉~
總結
此篇文章僅講述一些基本的語法應用,有程式底子的人在學 Shell Script 並不會太困難。
Shell Script 常用於系統管理、自動化操作檔案、自動化重複的指令碼、分析 log 等文件檔案、列印呈現我們想要的資料等…
在熟悉基礎後就可以組合出想要的邏輯進而達到有效率的工作行為。