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 是最佳利器。

第一個 Shell 腳本

#!/bin/bash
cd ~                          # 切換到用戶主目錄
mkdir shell_test              # 創建目錄
for ((i=0; i<10; i++))       # C 風格 for 循環
do
    touch test_$i.txt         # 創建 test_0.txt ~ test_9.txt
done

逐行解析:

  1. #!/bin/bash:指定解釋器(shebang)
  2. cd ~:切換目錄
  3. mkdir:創建目錄
  4. for ((...)):循環 10 次
  5. touch:創建空文件

cd/mkdir/touch 是系統命令(通常在 /bin);for/do/done 是 Shell 關鍵字。# 開頭為註釋。

變量系統

基礎規則

  • 無需聲明,賦值即創建
  • 默認皆為字符串
  • 區分大小寫
  • 引用需加 $:echo $var

賦值與引號

var1=10
var2="Jelly Think"  # 含空格必須加引號,等號兩邊不能有空格
echo $var1
echo $var2

read 讀取用戶輸入

read var1
echo $var1

引號差異

引號類型變量展開示例輸出
雙引號 "$var"是This is JellyThink
單引號 '$var'否This is $var
轉義 "\$var"否This is $var

常用環境變量

  • $HOME:用戶主目錄
  • $PATH:命令搜索路徑
  • $0:腳本名稱
  • $#:參數個數
  • $$:腳本進程 PID(常用於生成唯一臨時文件)

位置參數變量

#!/bin/bash
echo "參數個數:$#"
echo "腳本名稱:$0"
echo "第一個參數:$1"
echo "第二個參數:$2"

執行 ./argsDemo.sh Jelly Think 輸出:

參數個數:2
腳本名稱:./argsDemo.sh
第一個參數:Jelly
第二個參數:Think

條件判斷:test / [ ]

Shell 通過命令退出碼判斷真假(0 為真)。test 與 [ ] 等價,[ ] 更具可讀性(注意空格)。

if test -f testDemo.sh; then echo "exists"; fi
if [ -f test.c ]; then echo "exists"; else echo "not found"; fi

三大判斷類別

類別操作符含義
字符串str1 = str2相等為真
str1 != str2不等為真
-n str非空為真
-z str空串為真
算術-eq相等
-ne不等
-gt大於
-ge大於等於
-lt小於
-le小於等於
文件-d file是目錄
-f file是普通文件/存在
-r file可讀
-s file大小非 0
-w file可寫
-x file可執行

控制結構

if / elif / else

if [ "$var1" = "$var2" ]; then
    echo "equal"
elif [ "$var1" = "other" ]; then
    echo "other"
else
    echo "different"
fi

避坑:變量必須加雙引號,防止空值導致語法錯誤(如 [ = "yes" ])。

for 循環

for foo in Jelly Think Website; do
    echo $foo
done

while / until

while [ "$pwd" != "root" ]; do
    read pwd
done

until [ "$count" -gt 10 ]; do
    ((count++))
done

case 多模式匹配

case "$input" in
    yes|y|Yes|YES) echo "Good Morning" ;;
    no|n|No|NO)    echo "Good Afternoon" ;;
    *)             echo "Invalid input" ;;
esac
  • | 合並模式
  • * 兜底匹配
  • pattern) 後接命令,;; 結束

邏輯操作符

  • cmd1 && cmd2:cmd1 真才執行 cmd2(短路)
  • cmd1 || cmd2:cmd1 假才執行 cmd2(短路)

函數與作用域

foo() {
    local var="local"  # 局部變量
    echo $var
}
var="global"
foo
echo $var  # 輸出 global
  • 定義:name() { ... } 或 function name { ... }
  • 調用:直接寫函數名
  • local 聲明局部變量,覆蓋同名全局變量(僅函數內有效)
  • 參數通過 $1、$@ 等訪問,函數結束自動恢復

總結

本文涵蓋 Shell 基礎語法:變量、條件判斷、循環、分支、函數。下一篇將介紹常用文本處理命令(sed、awk、grep 等)與實戰腳本技巧。

Copyright © Windows教程網 All Rights Reserved