在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

bash腳本中的循環功能

CHANBAEK ? 來源:TIAP ? 作者:TIAP ? 2022-12-14 17:30 ? 次閱讀

循環是 bash 腳本中一個很重要的功能,用途廣泛。本篇文章我們介紹三種不同的循環,然后利用循環遍歷數組。

for 循環

for 循環有兩種不同的寫法:

  • c 語言樣式的 for 循環;
  • 列表中使用的 for 循環。

c 語言樣式的 for 循環

如果你熟悉 c 或者 c++編程語言,那么對于如下循環應該不會陌生:

for ((initialize ; condition ; increment)); do
    [COMMANDS]
done

根據上述語法,我們寫一個例子,打印 Hello Friend 十次:

for ((i = 0 ; i < 10 ; i++)); do
    echo "Hello Friend"
done

上述代碼中,首先將整型變量 i 初始化為 0,然后設置循環條件(i<10),如果條件為真,則執行循環,打印 Hello Friend,并將變量 i 遞增 1,然后進行下一次循環,知道 i<10不再滿足。

$ bash hello.sh 
Hello Friend
Hello Friend
Hello Friend
Hello Friend
Hello Friend
Hello Friend
Hello Friend
Hello Friend
Hello Friend
Hello Friend

列表中使用的 for 循環

列表循環是 for 循環的一種變體,這在處理列表或者數組的時候特別方便,其語法如下:

for item in [LIST]; do
    [COMMANDS]
done

比如,我們重寫一下上面的那個例子:

for i in {1..10}; do
    echo "Hello Friend"
done

另一個例子,下面腳本 var.sh 將打印在 /var 目錄下的所有文件和目錄:

#!/bin/bash


for i in /var/*; do
    echo $i 
done

執行一下,其輸出如下:

$ ./var.sh
/var/backups
/var/cache
/var/crash
/var/lib
/var/local
/var/lock
/var/log
/var/mail
/var/metrics
/var/opt
/var/run
/var/snap
/var/spool
/var/tmp

while 循環

while 循環是 bash 中另一個應用很廣泛的循環,其語法如下:

while [ condition ]; do
    [COMMANDS]
done

作為演示,我創建一個名為 3x10.sh 的腳本,用于打印前10個3的倍數:

#!/bin/bash


num=1
while [ $num -le 10 ]; do
echo $(($num * 3))
num=$(($num+1))
done

其執行結果如下:

$ ./3x10.sh
3
6
9
12
15
18
21
24
27
30

上述腳本中,首先將變量 num 初始化為 1,然后設定循環條件為 num 小于或等于 10。在循環體中,打印 num 乘以 3,然后將 num 遞增 1。

until 循環

如果你有 c/c++ 編程背景,那你可能會不自覺的找 do-while 循環。但是,在 bash 中并不存在 do-while 循環。

bush 中存在另一種循環,即 until 循環,其與 while 循環具有相同的語法:

until [ condition ]; do
    [COMMANDS]
Done

until 循環與 while 循環之間的主要區別在于循環條件。當循環條件為真時,while 循環會繼續,但是,當循環條件為假時,until 循環才會繼續。

比如上面我們寫的 3x10.sh 腳本,我們使用 until 循環來實現,如下:

#!/bin/bash


num=1
until [ $num -gt 10 ]; do
echo $(($num * 3))
num=$(($num+1))
done

大家應該可以注意到,上面的循環條件為 $num -gt 10,為前一個例子中 -le 的否定。

循環的具體應用

上面我們介紹了 bash 中循環的用法,下面在實際例子中介紹一下循環的使用。

打印數組的內容

在此之前,我們假定大家了解 bash 中的數組

遍歷數組,for 循環通常是最首要的選擇。

如下腳本 prime.sh 中,將會遍歷并打印出數組中的所有元素:

#!/bin/bash


prime=(2 3 5 7 11 13 17 19 23 29)
for i in "${prime[@]}"; do
echo $i
done

執行一下,結果如下:

$ ./prime.sh
2
3
5
7
11
13
17
19
23
29

在循環中使用 break 和 continue

有時候我們可能希望提前退出循環,或者跳過本次循環。那么此時需要分別使用 break 和 continue。

break 將會終止循環,并將程序控制轉到循環后的下一個命令或指令。

比如,下面的循環只會打印從 1 到 3:

for ((i=1;i<=10;i++)); do
    echo $i
    if [ $i -eq 3 ]; then
        break
    fi
done

使用 continue 語句會跳過本次循環,繼續執行下次循環。比如,下面腳本 odd.sh 只會打印從 1 到 10 之間的奇數,而跳過偶數:

#!/bin/bash
for ((i=0;i<=10;i++)); do
    if [ $(($i % 2)) -ne 1 ]; then
        continue
    fi
    echo $i
done

執行結果如下:

$ ./odd.sh
1
3
5
7
9

無限循環

無限循環是一個永遠運行的循環,其循環條件始終為真。大多數情況下,無限循環是因為邏輯錯誤造成的bug。

例如,有人可能希望創建一個循環,以降序打印數字1到10,結果可能會錯誤地創建以下無限循環:

for ((i=10;i>0;i++)); do
    echo $i
done

上述錯誤是將 i 遞增 1。要修復這個問題需要將遞增改為遞減 i--:

for ((i=10;i>0;i--)); do
echo $i
done

在某些情況下,我們可能希望有意創建無限循環,以等待系統滿足外部條件。如下所示:

for ((;;)); do
[COMMANDS]
done

如果想要創建一個無限 while 循環,可參考如下:

while [ true ]; do
    [COMMANDS]
done
聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • C語言
    +關注

    關注

    180

    文章

    7614

    瀏覽量

    137827
  • 循環
    +關注

    關注

    0

    文章

    92

    瀏覽量

    16050
  • 腳本
    +關注

    關注

    1

    文章

    392

    瀏覽量

    14957
  • Bash
    +關注

    關注

    0

    文章

    57

    瀏覽量

    10209
收藏 人收藏

    評論

    相關推薦

    開發人員必須具備的Bash腳本知識

    您可以使用 Bash 腳本自動執行各種任務。掌握基礎知識并開始您的 Bash 腳本之旅。
    發表于 09-27 09:09 ?448次閱讀

    bash腳本檢查子字符串的方法

    我們在寫 bash 腳本的時候,假如有一個字符串,我們想檢查其中是否包含另一個子字符串,那這個時候需要怎樣做呢?
    發表于 11-24 15:25 ?1649次閱讀
    <b class='flag-5'>bash</b><b class='flag-5'>腳本</b><b class='flag-5'>中</b>檢查子字符串的方法

    bash腳本的test命令詳解

    bash 腳本的 test? 命令用于檢查表達式的有效性,檢查命令或表達式為 true 或者 false。此外,它還可以用于檢查文件的類型和權限。
    發表于 11-24 15:32 ?3842次閱讀
    <b class='flag-5'>bash</b><b class='flag-5'>腳本</b><b class='flag-5'>中</b>的test命令詳解

    如何在bash shell腳本中使用變量

    如果你使用編程語言編寫過程序,那么一定接觸過變量。而在 bash 腳本的編寫時,變量也是一個很重要的概念。今天我們分享一下如何在 bash 腳本中使用變量。
    發表于 12-02 16:32 ?2166次閱讀
    如何在<b class='flag-5'>bash</b> shell<b class='flag-5'>腳本</b>中使用變量

    如何通過命令行將變量以參數的形式傳遞給bash腳本

    我們在上一篇文章中介紹了如何在 bash 腳本中使用變量,可以響應各種數據以及接收用戶輸入。
    發表于 12-02 16:38 ?1413次閱讀
    如何通過命令行將變量以參數的形式傳遞給<b class='flag-5'>bash</b><b class='flag-5'>腳本</b>

    高級Bash 腳本編程指南

    高級Bash 腳本編程指南
    發表于 10-26 08:33 ?7次下載
    高級<b class='flag-5'>Bash</b> <b class='flag-5'>腳本</b>編程指南

    命令行重度用戶需要的實用BASH腳本

    今天,我偶然發現了一組適用于命令行重度用戶的實用 BASH 腳本,這些腳本被稱為 Bash-Snippets,它們對于那些整天都與終端打交道的人來說可能會很有幫助。
    的頭像 發表于 08-30 10:37 ?2652次閱讀

    虛擬機:Bash Shell腳本打印出執行的命令

    默認情況下,bash腳本不會打印執行的每個命令,這個有時候不太方面。
    的頭像 發表于 06-22 14:44 ?4617次閱讀

    Raspberry Pi Bash Shell 腳本簡介

      拋開潛在的麻煩不談,Bash 可以是一個非常強大的工具,讓您可以自動執行各種任務。在即將發表的文章,我將展示如何使用 Bash 腳本以及一些硬件技巧來自動化我的 Raspberr
    的頭像 發表于 08-15 15:08 ?1276次閱讀
    Raspberry Pi <b class='flag-5'>Bash</b> Shell <b class='flag-5'>腳本</b>簡介

    如何在bash shell腳本接受參數

    終端命令通常包含一些參數,在使用的時候可以提供不同的參數來確定命令的執行方式。POSIX規范包含了用于命令行接口的選項。這也是與最早的UNIX應用程序建立的一個由來已久的約定,所以當你在寫bash腳本的時候,需要知道如何在
    的頭像 發表于 12-09 17:34 ?2769次閱讀

    bash如何創建函數

    當你的 bash 腳本中代碼非常多的時候,會看起來很混亂,其中有部分代碼有可能是重復的。這個時候,可以使用函數來避免重復的代碼。
    的頭像 發表于 12-14 17:31 ?1197次閱讀

    Bash腳本特殊變量$0是什么?

    Bash 腳本,`$0` 是一個特殊變量,它代表當前腳本的路徑和名稱。這個變量用于表示腳本自身,它是
    的頭像 發表于 05-12 14:41 ?1904次閱讀

    BASH shell腳本篇—條件命令

    這篇文章介紹下BASH shell的條件相關的命令,包括:if, case, while, until, for, break, continue。
    的頭像 發表于 10-11 15:21 ?697次閱讀
    <b class='flag-5'>BASH</b> shell<b class='flag-5'>腳本</b>篇—條件命令

    BASH shell腳本篇—函數

    函數是代碼重用的最重要方式。Bash函數可以定義為一組命令,在bash腳本多次調用。
    的頭像 發表于 10-20 16:31 ?1193次閱讀

    BASH shell腳本篇—文件處理介紹

    Bash Shell腳本,可以使用多種方法來對文件進行操作,包括讀取文件或寫入文件。
    的頭像 發表于 10-23 16:51 ?700次閱讀
    主站蜘蛛池模板: 国产亚洲精品aa在线观看 | 日本高免费观看在线播放 | 四虎4hu影库免费永久国产 | 激情爱爱的免费视频 | 视频在线观看h | 欧美成人xxxx| 可以免费看黄的网址 | bt天堂在线www最新版资源网 | 欧美高清一级 | 久久66haose精品 | 扒开末成年粉嫩的小缝强文 | 天天色天天操天天 | 狠狠色丁香婷婷久久综合不卡 | 亚洲日本久久久午夜精品 | 亚洲色图狠狠干 | 亚洲国产欧美在线人成aaa | 人人射人人射 | 狠狠色丁香久久婷婷综合丁香 | 三级理论在线观看 | 爽爽爽爽爽爽a成人免费视频 | 综合天天 | 国产成人mv在线观看入口视频 | 美女下面小内内的沟 | 天天综合天天添夜夜添狠狠添 | 女人被狂躁视频免费网站 | 国产精品久久久久久吹潮 | 国产精品午夜自在在线精品 | 日本高清视频色www在线观看 | 人人射人人草 | 欧洲freexxxx性| 久操免费在线视频 | 最近最新中文字幕在线第一页 | 一级片视频播放 | 欧美.成人.综合在线 | 看全色黄大色大片免费久久 | 97人人做人人爱 | 亚洲激情 | 日本三级最新中文字幕电影 | 欧美成人影院 | 欧美一二区视频 | 午夜精品福利在线 |