欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Shell腳本條件判斷語法格式實戰(zhàn)示例

 更新時間:2025年08月11日 14:37:55   作者:咖啡の貓  
本文將全面講解 Shell 腳本中條件判斷的語法格式,包括 test 命令、[ ]、[[ ]] 和 (( )) 四種常見形式,并結(jié)合實際示例幫助你掌握其使用方法和注意事項,需要的朋友跟隨小編一起看看吧

一、前言

在 Linux 系統(tǒng)中,Shell 腳本是系統(tǒng)管理、自動化任務(wù)和運維工作中不可或缺的工具。而條件判斷是 Shell 腳本中最核心的控制結(jié)構(gòu)之一,它決定了程序的執(zhí)行流程,讓腳本具備“智能”判斷能力。

本文將全面講解 Shell 腳本中條件判斷的語法格式,包括 test 命令、[ ]、[[ ]](( )) 四種常見形式,并結(jié)合實際示例幫助你掌握其使用方法和注意事項。

二、Shell 條件判斷的四種語法格式

Shell 中有四種常用的條件判斷寫法,它們各有特點,適用于不同場景。

1. 使用test命令

test 是最基礎(chǔ)的條件判斷命令,語法如下:

test 表達式

示例:

#!/bin/bash
if test 10 -gt 5; then
    echo "10 大于 5"
fi

? 特點:兼容性好,適用于所有 POSIX 標(biāo)準(zhǔn)的 shell。

2. 使用[ ](中括號)

這是 test 命令的等價寫法,更常見于腳本中:

[ 表達式 ]

注意: 中括號與表達式之間必須有空格!

示例:

#!/bin/bash
num=20
if [ $num -eq 20 ]; then
    echo "數(shù)值相等"
fi

? 特點:簡潔,廣泛使用。
?? 注意:[ ] 不支持正則表達式和通配符匹配。

3. 使用[[ ]](雙中括號)—— 推薦使用

[[ ]] 是 Bash 的擴展語法,功能更強大,支持字符串模式匹配、邏輯運算符 &&|| 等。

[[ 表達式 ]]

示例:

#!/bin/bash
name="alice"
if [[ $name == "alice" ]]; then
    echo "用戶名正確"
fi
# 支持通配符
if [[ $name == a* ]]; then
    echo "名字以 a 開頭"
fi

? 特點:

  • 支持 &&||、! 邏輯運算符
  • 支持 ==!= 字符串匹配(支持通配符)
  • 不需要對變量加引號(但仍建議加)

?? 注意:[[ ]] 僅在 Bash、Zsh 等現(xiàn)代 shell 中可用,不適用于 sh。

4. 使用(( ))(雙小括號)—— 數(shù)值計算專用

(( )) 用于數(shù)值比較和算術(shù)運算,語法更接近 C 語言。

(( 表達式 ))

示例:

#!/bin/bash
a=10
b=5
if (( a > b )); then
    echo "a 大于 b"
fi
# 支持復(fù)合運算
if (( a > 5 && b < 10 )); then
    echo "條件成立"
fi

? 特點:

  • 專用于數(shù)值判斷
  • 支持 ><>=<===!=&&|| 等
  • 寫法簡潔,無需使用 -gt、-lt 等參數(shù)

三、常用條件判斷類型

1. 數(shù)值比較

運算符含義示例
-eq等于[ 5 -eq 5 ]
-ne不等于[ 5 -ne 3 ]
-gt大于[ 5 -gt 3 ]
-ge大于等于[ 5 -ge 5 ]
-lt小于[ 3 -lt 5 ]
-le小于等于[ 3 -le 5 ]

?? 使用 (( )) 時可用 >, <, == 等符號。

2. 字符串比較

運算符含義示例
= 或 ==等于[ "a" = "a" ]
!=不等于[ "a" != "b" ]
-z字符串為空[ -z "" ]
-n字符串非空[ -n "hello" ]

示例:

str=""
if [ -z "$str" ]; then
    echo "字符串為空"
fi

? 建議:字符串變量使用雙引號包圍,防止空值導(dǎo)致語法錯誤。

3. 文件測試

運算符含義示例
-f file是否為普通文件[ -f /etc/passwd ]
-d dir是否為目錄[ -d /tmp ]
-e file是否存在[ -e /bin/bash ]
-r file是否可讀[ -r file.txt ]
-w file是否可寫[ -w file.txt ]
-x file是否可執(zhí)行[ -x script.sh ]

示例:

if [ -f "/etc/hosts" ]; then
    echo "hosts 文件存在"
fi

四、邏輯運算符

運算符說明用法
&&邏輯與[[ 條件1 && 條件2 ]]
``
!邏輯非[[ ! 條件 ]]

?? 注意:

  • [ ] 中需使用 -a(與)、-o(或),不推薦使用。
  • 推薦使用 [[ ]] 配合 && 和 ||,更清晰易讀。

五、實戰(zhàn)示例:判斷文件是否存在并可讀

#!/bin/bash
filename="data.txt"
if [[ -f "$filename" && -r "$filename" ]]; then
    echo "文件存在且可讀,開始處理..."
    cat "$filename"
else
    echo "文件不存在或不可讀!"
    exit 1
fi

六、常見錯誤與注意事項

錯誤原因解決方法
缺少空格[ $var=5 ]正確寫法:[ $var = 5 ]
變量未加引號$var 為空時報錯使用 "$var"
使用 [ ] 寫復(fù)雜邏輯不支持 &&、`
在 sh 中使用 [[ ]]兼容性問題改為 [ ] 或使用 bash 執(zhí)行

七、結(jié)語

到此這篇關(guān)于Shell腳本條件判斷語法格式實戰(zhàn)示例的文章就介紹到這了,更多相關(guān)shell條件判斷內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

最新評論