Windows XP Windows 7 Windows 2003 Windows Vista Windows 綜合教學 Linux 系統教學
Windows 10 Windows 8 Windows 2008 Windows NT Windows Server 電腦軟體教學
您现在的位置: Windows教程網 >> Windows教程 >  >> Linux 系統教學 >> 關於 Linux

Linux Shell 指令碼程式設計入門:變型、參數與控制結構完整指南

編輯:關於 Linux

Shell 不僅是命令解譯器,更是一門完整的程式設計語言,提供變數、參數、流程控制、函式等機制,被廣泛用於系統自動化、部署腳本、日誌分析等場景。本文系統整理 Shell 的五大變數類型、參數置換、常用預定義變數與基本語法,為撰寫健壯的 Shell Script 打好基礎。

Shell 腳本程式設計概念圖

一、Shell 變數基本語法

  • 定義:VAR_NAME=value(等號兩邊**不可有空格**)
  • 引用:$VAR_NAME 或 ${VAR_NAME}
  • 所有值皆為字串;數值運算需用 $((...))、let 或 bc。
  • 慣例:自訂變數全大寫(如 MY_VAR),區別於系統變數與指令。

二、五大變數類型

1. 環境變數

Shell 啟動時由系統預定義,影響執行環境。常用:

變數用途
HOME使用者家目錄絕對路徑
PATH指令搜尋路徑(冒號分隔)
TERM終端機型態
UID當前使用者 ID
PWD當前工作目錄(隨 cd 變化)
PS1主提示字元(root 為 #,一般用戶為 $)
PS2續行提示字元(預設 >)

用戶可重新定義(如 PATH=$PATH:/opt/bin),以 export VAR 匯出供子行程繼承。

2. 使用者自訂變數

MY_VAR="hello world"   # 含空格須加雙引號
readonly MY_VAR        # 唯讀,後續不可修改
export MY_VAR          # 匯出為環境變數
export NEW_VAR="value" # 定義並匯出一步完成

3. 位置參數

腳本執行時傳入的參數:$1、$2... $9、${10}...
$0 為腳本檔名本身(非位置參數)。
$# 參數個數;$* 或 $@ 所有參數內容。

4. 預定義變數(唯讀)

變數含義
$?上一指令結束碼(0 成功,非 0 失敗)
$$當前 Shell 進程 PID(常用於暫存檔命名 /tmp/myscript.$$)
$!最後一個背景進程 PID
$0當前執行的腳本/指令名稱

5. 參數置換變數(條件賦值)

語法行為
${VAR:-word}VAR 已設定且非空則用其值,否則用 word(不改變 VAR)
${VAR:=word}VAR 未設定或為空則將 word 賦給 VAR,再用其值(位置參數不可用)
${VAR:?word}VAR 未設定則輸出 word 並退出腳本(常用於錯誤檢查)
${VAR:+word}VAR 已設定則用 word,否則不置換(留空)

三、流程控制速查

# if-else
if [ condition ]; then ...; elif [ condition ]; then ...; else ...; fi

# case
case $VAR in
  pattern1) ... ;;
  pattern2) ... ;;
  *) ... ;;
esac

# for 迴圈
for i in list; do ...; done
for ((i=0; i<10; i++)); do ...; done

# while / until
while [ condition ]; do ...; done
until [ condition ]; do ...; done

四、函式與良好習慣

my_func() {
    local local_var="only here"  # 區域變數
    echo "arg1=$1, arg2=$2"
    return 0
}
my_func "hello" "world"
  • 腳本開頭加 #!/bin/bash(或 #!/usr/bin/env bash)。
  • 啟用 set -euo pipefail:遇錯即停、未定義變數報錯、管線任一失敗即判定失敗。
  • 使用 shellcheck 靜態分析腳本。
  • 變數引用習慣加大括號 ${VAR},避免歧義。

掌握上述核心概念,即可編寫結構清晰、錯誤可控、可維護的 Shell 腳本,大幅提升運維自動化效率。

Copyright © Windows教程網 All Rights Reserved