首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> C++ >> 關於C++

Shell 腳本入門指南:從 Hello World 到變量與運算

     編輯:關於C++

Shell 腳本是 Linux/Unix 系統管理與自動化運維的核心技能。本文面向初學者,從編寫第一個腳本開始,循序漸進講解執行方式、權限、變量定義、算術運算、關係運算,並給出完整可運行示例。

兩種執行模式

模式說明
交互式用戶輸入一條命令,Shell 解釋執行一條
批處理預先寫好腳本文件,一次性執行所有命令

bash vs sh

  • bash (Bourne Again SHell) 是 sh (Bourne Shell) 的超集,完全兼容 sh 語法。
  • 腳本首行 #!/bin/bash 或 #!/bin/sh 指定解釋器。
  • 本文基於 bash,但語法均兼容 sh。

編寫第一個腳本

步驟

  1. vi test.sh 進入編輯器
  2. 按 i 進入插入模式,輸入內容
  3. 按 Esc 退出插入模式,輸入 :wq 保存退出

內容示例

#!/bin/bash
echo "Hi, SB"
read PERSON
echo "$PERSON, ni shi hou zi pai lai de dou bi ma ?"

賦予執行權限並運行

chmod +x ./test.sh   # 必須!默認無執行權限
./test.sh            # 方式1:當前目錄執行
sh test.sh           # 方式2:顯式調用解釋器

變量定義規則

# 正確:等號兩邊無空格
name="ZhangSan"
age=25

# 錯誤:name = "ZhangSan"  會被識別為命令 name 參數 = 和 "ZhangSan"

# 使用變量:建議加大括號
echo "Name is ${name}"
echo "Age is $age"      # 簡單情況可省略大括號

命名規範

  1. 首字符必須為字母 (a-z, A-Z)
  2. 可包含字母、數字、下劃線 (_)
  3. 不含空格、標點符號
  4. 不使用保留關鍵字 (help 查看)

三類變量

類型作用域示例
局部變量當前 Shell 實例/腳本內部name="Tom"
環境變量所有子進程可見export PATH=...
Shell 變量Shell 內部特殊變量$0, $#, $?, $$

算術運算

Bash 原生不支持浮點運算,整數運算用 expr 或 $((...))。

expr 用法(經典)

#!/bin/bash
value=`expr 2 + 2`          # 反引號 ` 非單引號 ',鍵盤 Esc 下方
echo "Total value: ${value}" # 輸出 4

a=10; b=20
value=`expr $a \* $b`       # 乘法必須轉義 *
echo "a * b = ${value}"     # 200
value=`expr $b % $a`        # 取模
echo "b % a = ${value}"     # 0

推薦:$((...)) 語法(更現代、快速、無需轉義)

value=$((2 + 2))
value=$((a * b))     # 直接用 * 無需轉義
value=$((b % a))
value=$((a ** 2))    # 支持冪運算

關係運算(整數比較)

只能用於整數,語法:[ $a -op $b ],括號內必須有空格。

運算符含義示例
-eq等於[ $a -eq $b ]
-ne不等於[ $a -ne $b ]
-gt大於[ $a -gt $b ]
-lt小於[ $a -lt $b ]
-ge大於等於[ $a -ge $b ]
-le小於等於[ $a -le $b ]

條件語句結構

if [ $a -eq $b ]; then
    echo "Equal"
else
    echo "Not equal"
fi

# 簡寫單行
[ $a -gt $b ] && echo "a > b" || echo "a <= b"

完整練習腳本

#!/bin/bash
# 算術與關係運算綜合練習
a=10
b=20

echo "a = $a, b = $b"
echo "a + b = $((a + b))"
echo "a - b = $((a - b))"
echo "a * b = $((a * b))"
echo "b / a = $((b / a))"
echo "b % a = $((b % a))"

if [ $a -eq $b ]; then echo "a == b"; else echo "a != b"; fi
if [ $a -lt $b ]; then echo "a < b"; fi
if [ $a -le $b ]; then echo "a <= b"; fi

常見坑點總結

  1. 等號兩邊不能有空格:a = 1 是命令,a=1 才是賦值。
  2. [ ] 內部必須有空格:[$a==$b] 錯誤,[ $a == $b ] 正確(字符串比較用 ==,整數用 -eq)。
  3. expr 運算符需空格:expr 2+2 錯誤,expr 2 + 2 正確。
  4. 乘法轉義:expr 中 \*,$((...)) 中直接 *。
  5. 反引號 ` vs 單引號 ':命令替換用反引號或 $()(推薦)。

下一步學習建議

  • 字符串操作:長度、截取、替換、比較
  • 數組:定義、遍歷、切片
  • 流程控制:for/while/until 循環、case 語句
  • 函數:定義、參數傳遞、返回值
  • 文件操作:讀寫、重定向、管道
  • 正則表達式與 grep/sed/awk 結合

總結

Shell 腳本看似簡單,但細節決定成敗。掌握「無空格賦值、[ ] 內加空格、expr/$((...)) 運算、關係運算符」四大核心語法,配合 chmod +x 權限管理,即可編寫實用的自動化腳本。建議在終端反復練習本文示例,肌肉記憶比死記硬背更有效。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved