亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

Shell腳本until語法結構的具體使用

 更新時間:2025年08月25日 08:31:08   作者:咖啡の貓  
本文主要介紹了Shell腳本-until語法結構的具體使用,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧

一、前言

在 Shell 腳本編程中,循環(huán)結構是實現(xiàn)自動化任務的核心工具之一。除了常見的 forwhile 循環(huán)外,until 循環(huán)提供了一種“直到條件為真才停止”的邏輯控制方式,特別適用于某些特定場景。

本文將帶你全面掌握 until 循環(huán)的語法結構、執(zhí)行流程、使用場景以及最佳實踐,并通過多個實用代碼示例幫助你快速上手。

二、until循環(huán)的基本語法

until 循環(huán)的執(zhí)行邏輯是:

先判斷條件是否為假,如果為假,則執(zhí)行循環(huán)體;直到條件變?yōu)檎?,循環(huán)結束。

? 語法結構:

until [ 條件判斷 ]
do
    # 循環(huán)體
    命令1
    命令2
    ...
done

?? 注意:條件判斷使用的是 [ ] 或 test 命令,也可以使用 (( )) 進行數(shù)值比較。

三、執(zhí)行流程圖解

      +------------------+
      |   執(zhí)行 until     |
      +------------------+
               |
               v
      +------------------+
      | 條件是否為真?    |<---+
      +------------------+   |
            /     \         |
         是/       \否       |
          v         v       |
    +---------+  +-----------+
    | 退出循環(huán) |  | 執(zhí)行循環(huán)體 |
    +---------+  +-----------+
                     |
                     +------->(回到條件判斷)

?? 也就是說,until 循環(huán)至少會執(zhí)行一次循環(huán)體(除非條件一開始就為真)。

四、簡單示例:打印數(shù)字 1 到 5

#!/bin/bash

i=1

until [ $i -gt 5 ]
do
    echo "當前數(shù)字: $i"
    i=$((i + 1))
done

輸出結果:

當前數(shù)字: 1
當前數(shù)字: 2
當前數(shù)字: 3
當前數(shù)字: 4
當前數(shù)字: 5

? 解析:當 i <= 5 時,條件 [ $i -gt 5 ] 為假,循環(huán)繼續(xù);當 i=6 時,條件為真,循環(huán)結束。

五、untilvswhile:關鍵區(qū)別

特性untilwhile
條件判斷條件為假時執(zhí)行條件為真時執(zhí)行
邏輯直到條件為真才退出當條件為真時繼續(xù)
使用場景等待某個事件發(fā)生持續(xù)執(zhí)行某個任務

? 對比示例:實現(xiàn)相同功能

使用until:

i=1
until [ $i -gt 5 ]; do
    echo $i
    i=$((i+1))
done

使用while:

i=1
while [ $i -le 5 ]; do
    echo $i
    i=$((i+1))
done

?? 兩者功能相同,但邏輯表達方式相反。

六、實際應用場景

? 場景1:等待某個服務啟動(如 MySQL)

#!/bin/bash

echo "等待 MySQL 服務啟動..."

until nc -z localhost 3306
do
    echo "MySQL 未啟動,5秒后重試..."
    sleep 5
done

echo "MySQL 已啟動,繼續(xù)后續(xù)操作。"

?? 說明:nc -z host port 用于檢測端口是否開放,直到 MySQL 啟動成功才退出循環(huán)。

? 場景2:用戶輸入驗證(必須輸入非空值)

#!/bin/bash

input=""

until [ -n "$input" ]
do
    read -p "請輸入用戶名: " input
    if [ -z "$input" ]; then
        echo "輸入不能為空,請重新輸入。"
    fi
done

echo "歡迎你,$input!"

? 說明:直到用戶輸入非空字符串才退出循環(huán)。

? 場景3:帶重試機制的命令執(zhí)行

#!/bin/bash

max_retries=3
attempt=1

until ping -c1 example.com &>/dev/null || [ $attempt -gt $max_retries ]
do
    echo "第 $attempt 次嘗試失敗,正在重試..."
    attempt=$((attempt + 1))
    sleep 2
done

if [ $attempt -le $max_retries ]; then
    echo "網(wǎng)絡連接成功!"
else
    echo "錯誤:無法連接網(wǎng)絡,已重試 $max_retries 次。"
fi

? 說明:最多重試 3 次,成功則提前退出。

七、嵌套循環(huán)與控制語句

? 示例:嵌套 until 循環(huán)

i=1
until [ $i -gt 2 ]
do
    j=1
    until [ $j -gt 3 ]
    do
        echo "i=$i, j=$j"
        j=$((j + 1))
    done
    i=$((i + 1))
done

輸出:

 i=1, j=1
i=1, j=2
i=1, j=3
i=2, j=1
i=2, j=2
i=2, j=3

? 使用break和continue

i=1
until [ $i -gt 5 ]
do
    if [ $i -eq 3 ]; then
        i=$((i + 1))
        continue  # 跳過本次循環(huán)
    fi

    if [ $i -eq 5 ]; then
        break  # 提前退出循環(huán)
    fi

    echo "當前值: $i"
    i=$((i + 1))
done

? 輸出:1、2、4

八、常見錯誤與調(diào)試技巧

錯誤原因解決方案
無限循環(huán)條件永遠不為真檢查變量是否更新
語法錯誤缺少 do 或 done檢查關鍵字配對
變量未定義使用未初始化變量初始化變量或添加默認值
條件判斷錯誤使用 = 而不是 -eq(數(shù)值比較)數(shù)值用 -eq,字符串用 =

?? 調(diào)試建議:使用 set -x 開啟調(diào)試模式,查看執(zhí)行過程。

九、總結對比表:until循環(huán)要點一覽

項目說明
關鍵字until, do, done
執(zhí)行邏輯條件為假時執(zhí)行循環(huán)體
至少執(zhí)行次數(shù)1 次(除非條件一開始為真)
適用場景等待事件發(fā)生、重試機制、輸入驗證
常見搭配sleep、ping、nc、read 等命令

十、結語

到此這篇關于Shell腳本until語法結構的具體使用的文章就介紹到這了,更多相關Shell until語法結構內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • linux啟動級別的含義(init 0-6)

    linux啟動級別的含義(init 0-6)

    這篇文章主要介紹了linux啟動級別的含義(init 0-6),需要的朋友可以參考下
    2014-02-02
  • linux系統(tǒng)下dd命令的使用方法

    linux系統(tǒng)下dd命令的使用方法

    這篇文章主要介紹了linux系統(tǒng)下dd命令的使用方法,dd命令的功能是把指定的輸入文件拷貝到指定的輸出文件中,并且在拷貝過程中可以進行格式轉換
    2014-01-01
  • 用Shell判斷字符串包含關系的方法小結

    用Shell判斷字符串包含關系的方法小結

    這篇文章主要給大家介紹了關于用Shell判斷字符串包含關系的幾種方法,其中包括利用grep查找、利用字符串運算符、利用通配符、利用case in 語句以及利用替換等方法,每個方法都給出了詳細的示例代碼與介紹,有需要的朋友們可以參考參考借鑒,下面來一起看看吧。
    2016-12-12
  • 每天一個linux命令 chgrp命令

    每天一個linux命令 chgrp命令

    這篇文章主要為大家詳細介紹了一個linux命令:chgrp命令,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-02-02
  • 使用Linux shell腳本實現(xiàn)FTP定時執(zhí)行批量下載指定文件

    使用Linux shell腳本實現(xiàn)FTP定時執(zhí)行批量下載指定文件

    使用FTP定時批量下載指定文件的shell腳本,具體實例介紹如下所示,需要的朋友參考下吧
    2017-04-04
  • Shell循環(huán)語句及中斷語句的使用

    Shell循環(huán)語句及中斷語句的使用

    本文主要介紹了Shell循環(huán)語句及中斷語句的使用,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2023-05-05
  • shell腳本中echo顯示內(nèi)容帶顏色的實現(xiàn)方法

    shell腳本中echo顯示內(nèi)容帶顏色的實現(xiàn)方法

    這篇文章主要介紹了shell腳本中通過echo顯示帶顏色內(nèi)容的實現(xiàn)方法,需要的朋友可以參考下
    2013-11-11
  • shell中數(shù)組的定義及操作

    shell中數(shù)組的定義及操作

    本文主要介紹了shell中數(shù)組的定義及操作,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2023-05-05
  • linux下執(zhí)行shell命令方法簡介

    linux下執(zhí)行shell命令方法簡介

    本文給大家分享的是linux系統(tǒng)下執(zhí)行shell命令的常用的2種方法,希望對初學shell命令的小伙伴能夠有所幫助
    2016-12-12
  • shell腳本編程之if語句學習筆記

    shell腳本編程之if語句學習筆記

    這篇文章主要介紹了shell腳本編程之if語句學習筆記,本文先是給出了程序代碼,然后詳細的分解了第句代碼的作用,需要的朋友可以參考下
    2014-09-09

最新評論