Bash 腳本入門:語法、變數、指令
1. 什麼是 bash 腳本?
如果你曾經想過:「為什麼我需要一遍又一遍地執行相同的命令?」那麼恭喜你,已經準備好學習 bash 腳本了!Bash 腳本是一種通過在一個文件中寫下命令序列來自動化 Linux 工作的方式。Bash (Bourne Again Shell) 不僅僅是一個 shell,它是管理員、程式設計師以及所有希望讓系統為自己工作的人的瑞士軍刀。
Bash 腳本的優勢
- 節省時間:寫一次——運行八次。
- 任務可重複性:只要你寫得正確,每次運行腳本都會得到相同的結果。
- 自動化日常工作:創建自訂命令來備份、資源監控或管理文件。
2. 編寫腳本的基礎
好吧,我們開始吧。Bash 腳本就是一個簡單的文字檔案,裡面包含了一些命令。但為了讓 Linux 知道這是一個腳本而不是日記中的隨機記錄,必須遵循特定的規則。
步驟 1:檔案名稱和格式
Bash 腳本通常使用副檔名 .sh
(但這不是必須的)。例如:
hello_world.sh
backup_script.sh
步驟 2:必須的開頭
每個 bash 腳本都以以下內容開始:
#!/bin/bash
這一行叫做 shebang,告訴系統執行腳本需要使用 interpretor /bin/bash
。沒有這行,系統只會看著你的腳本,無奈地嘆氣,然後啥也不做。
步驟 3:最簡單的腳本
我們來創建並運行一個腳本,它會顯示「哈囉,世界!」的文本。畢竟,為什麼不呢?
創建文件:
nano hello_world.sh
新增行:
#!/bin/bash echo "哈囉,世界!"
將檔案設為可執行:
chmod +x hello_world.sh
執行腳本:
./hello_world.sh
在螢幕上你會看到:
哈囉,世界!
3. 使用變數
變數是你腳本中的資料存儲器。它們讓腳本變得更靈活且好用。
建立變數
要宣告一個變數,可以使用以下格式:
變數名稱="值"
範例:
NAME="Linux"
echo "歡迎來到 $NAME!"
輸出:
歡迎來到 Linux!
注意:變數名稱與等號 =
之間不可以有空格。如果加上空格,bash 會以為你在寫一些奇怪的東西,然後回報錯誤。
內建變數
Bash 提供了幾個預設的變數,例如:
$USER
— 當前使用者。$HOME
— 使用者的家目錄。$PWD
— 當前工作目錄。
試試看這段腳本:
#!/bin/bash
echo "你好, $USER!"
echo "你的家目錄是: $HOME"
echo "你現在在這裡工作: $PWD"
4. 從使用者獲取資料
有時候腳本需要從使用者獲取資料以便運行。可以使用 read
指令來做到這一點。
範例:
#!/bin/bash
echo "你叫什麼名字?"
read NAME
echo "你好, $NAME!"
運行腳本後,你可以輸入你的名字,腳本會個性化地向你問好。
5. 在腳本中使用命令
Bash 允許你執行命令,就像你在終端中輸入它們一樣。
例如:
#!/bin/bash
echo "現在的日期和時間是:"
date
date
命令會顯示當前的日期和時間,例如:
現在的日期和時間是:
Mon Oct 30 12:34:56 UTC 2023
將命令結果存入變數
可以使用 $()
將命令的輸出存入變數。這對後續數據處理很方便。
範例:
#!/bin/bash
CURRENT_DATE=$(date)
echo "當前時間是: $CURRENT_DATE"
6. 腳本中的註解
記得永遠加上註解,這樣一個月後你還能明白你到底寫了什麼。使用符號 #
來添加註解:
#!/bin/bash
# 這是一個歡迎腳本
echo "歡迎來到Bash的世界!"
註解會被解釋器忽略,不會影響執行。
7. 範例
現在我們來寫一個腳本檢查檔案是否存在。
創建檔案:
nano file_checker.sh
新增代碼:
#!/bin/bash # 請求檔案名稱 echo "請輸入檔案名稱:" read FILE_NAME # 檢查檔案是否存在 if [ -f "$FILE_NAME" ]; then echo "檔案 $FILE_NAME 存在。" else echo "檔案 $FILE_NAME 未找到。" fi
將檔案設為可執行並運行:
chmod +x file_checker.sh ./file_checker.sh
腳本運行範例:
請輸入檔案名稱: test.txt 檔案 test.txt 存在。
8. 常見錯誤
寫 bash 腳本不僅有趣,但有時也會讓人抓狂。以下是幾個常見錯誤:
忘記加 shebang。
如果沒有加上#!/bin/bash
這行,腳本可能會嘗試使用其他解釋器執行,導致錯誤。未宣告的變數。
如果你不小心在變數名稱上打錯字,bash 會將其視為空值。可以在腳本開頭加入set -u
啟用嚴格檢查模式。=
兩邊加空格。
永遠不要這樣寫:VARIABLE = "value"
。這會導致錯誤。權限問題。
如果腳本沒有執行權限,用chmod +x
添加它。
實作練習
寫一個腳本,執行以下操作:
- 請求使用者的名字。
- 顯示歡迎詞。
- 顯示目前的日期和時間。
寫一個腳本,執行以下操作:
- 請求使用者輸入檔案名稱。
- 如果檔案不存在則創建,或告知檔案已存在。
現在你已經了解了 bash 腳本的基礎!接下來要學習如何添加條件和迴圈,不過這是下一堂課的內容。衝吧,把世界自動化!
GO TO FULL VERSION