跳轉到

建立 2026-09-14 更新 2026-09-14

腳本入門

Bash 腳本是文字檔。第一行告訴系統用哪個直譯器,其餘每一行就是你原本會打進終端機的指令。

最小可執行範例

#!/usr/bin/env bash
set -euo pipefail

echo "Hello, Linux"

存成 hello.sh

  • #!/usr/bin/env bash 是 shebang,指定用 PATH 裡的 bash 來跑
  • set -euo pipefail 讓腳本在常見錯誤時及早停下來(見下文)
chmod u+x hello.sh
./hello.sh

一定要寫 ./,因為目前目錄通常不在 PATH 裡,這是安全設計,不是故障。

也可以不給執行權、明確叫 bash:

bash hello.sh

三種執行方式差在哪

寫法 意義
./hello.sh 開一個新程序跑腳本,要有執行權與 shebang
bash hello.sh 用 bash 讀這個檔,不需要 +x
source hello.sh. hello.sh 目前 shell 執行,改到的變數會留下來

設定 PATH、定義函式時才需要 source。一般自動化用前兩種。

set -euo pipefail 在做什麼

set -e          # 指令失敗就結束腳本
set -u          # 用到未定義變數就當錯誤
set -o pipefail # 管線裡任一關失敗,整條算失敗

沒有這三行時,Bash 預設很寬鬆:中間指令失敗仍繼續往下跑,最後還回傳成功。入門腳本建議加上,少踩「其實失敗了卻以為成功」。

若某行失敗是預期內的,可以暫時關掉或寫成:

rm -f /tmp/cache/* || true

註解與除錯

# 這是註解
bash -x hello.sh

-x 會把每一行展開後印出來,變數沒如你想的那樣時非常有用。

副檔名

.sh 只是給人看的。系統看的是 shebang 與執行權。習慣仍建議加上,搜尋比較方便。

總結

第一行 shebang,chmod u+x,用 ./檔名 執行。加上 set -euo pipefail 再開始寫邏輯。接下來是 變數與參數