0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

巧用while死循環(huán)

阿銘linux ? 來源:阿銘linux ? 作者:阿銘linux ? 2022-12-21 09:14 ? 次閱讀

【需求】 編寫一個(gè)能接受兩個(gè)參數(shù)的腳本:

1)第一個(gè)參數(shù)為URL,即可下載的文件;第二個(gè)參數(shù)為目錄,即下載后保存的位置;

2)如果用戶給的目錄不存在,則提示用戶是否創(chuàng)建;如果創(chuàng)建就繼續(xù)執(zhí)行,否則直接退出腳本,返回值為1;

3)如果給的目錄存在,則下載文件;下載命令執(zhí)行結(jié)束后測試文件下載成功與否;如果成功,返回值為0,否則返回值為2;

【分析】

1)腳本要有判斷參數(shù)個(gè)數(shù)的過程,2個(gè)參數(shù)缺一不可;

2)判斷給定目錄是否存在,當(dāng)目錄不存在,則需要自動(dòng)創(chuàng)建,此時(shí)是需要跟用戶交互的,所以要使用read,讓用戶提供指令,這個(gè)指令的判斷就需要考慮到多種情況。此時(shí)就需要使用while死循環(huán);

【參考腳本】

#!/bin/bash
if [ $# -ne 2 ]
then
    echo "腳本需要提供兩個(gè)參數(shù),第一個(gè)參數(shù)為下載地址,第二個(gè)參數(shù)為下載目標(biāo)目錄"
    exit 3
fi
while :
do
    if [ -d $2 ]
    then
        break
    else
        read -p "目錄不存在,是否要?jiǎng)?chuàng)建?(y|n) " yn
        case $yn in
            y|Y)
                mkdir -p $2
                break
                ;;
            n|N)
                exit 1
                ;;
            *)
                echo "你只能輸入y或者n"
                continue
                ;;
esac
    fi
done


cd $2
wget $1


if [ $? -eq 0 ];then
    echo "下載成功"
    exit 0
else
    echo "下載失敗"
exit2
fi

本例中的while死循環(huán)非常有用,在工作中使用場景非常多,所以請你一定要搞懂它的用法哈!

審核編輯:湯梓紅

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報(bào)投訴
  • 參數(shù)
    +關(guān)注

    關(guān)注

    11

    文章

    1839

    瀏覽量

    32284
  • 腳本
    +關(guān)注

    關(guān)注

    1

    文章

    391

    瀏覽量

    14889

原文標(biāo)題:巧用while死循環(huán)

文章出處:【微信號:aming_linux,微信公眾號:阿銘linux】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏

    評論

    相關(guān)推薦

    為什么while(ADC_GetFlagStatus(ADC1, ADC_FLAG_EOC)==RESET)死循環(huán)?

    為啥while(ADC_GetFlagStatus(ADC1, ADC_FLAG_EOC)==RESET)死循環(huán)
    發(fā)表于 05-14 06:01

    關(guān)于死循環(huán)語句

    do{..........} while(1) 和for(;;)[..............]這兩個(gè)語句都代表死循環(huán)吧都是一樣的意思吧!
    發(fā)表于 09-26 17:37

    跳不出的 while 循環(huán)

    STM32F103 跳不出的 while 循環(huán)
    發(fā)表于 12-09 18:38 ?0次下載

    為什么單片機(jī)的主程序是死循環(huán)

    任何一個(gè)可用程序都必然是死循環(huán)程序,這不僅僅是指單片機(jī)程序。因?yàn)槿魏挝⑻幚砥飨到y(tǒng)一旦開機(jī),系統(tǒng)都在處理內(nèi)部事件和外設(shè)響應(yīng),這個(gè)過程是一個(gè)循環(huán)過程,除非關(guān)機(jī)才能結(jié)束這個(gè)死循環(huán)程序。因此,對于單片機(jī)編程必須注意以下幾點(diǎn)
    發(fā)表于 07-15 17:38 ?5385次閱讀

    單片機(jī)的死循環(huán)有什么作用

    單片機(jī)是可編程器件,在使用時(shí)需要編寫滿足需求的程序。其C語言程序在各個(gè)端口、配置初始化完成后,會(huì)進(jìn)入一個(gè)死循環(huán),一般用while(1){;}的形式。初始化完成后,單片機(jī)就在死循環(huán)內(nèi)一遍又一遍的執(zhí)行程序邏輯。復(fù)位后,就從頭開始,初
    發(fā)表于 08-09 17:01 ?5753次閱讀
    單片機(jī)的<b class='flag-5'>死循環(huán)</b>有什么作用

    python while循環(huán)詳解

    python while循環(huán) while 語句用于循環(huán)執(zhí)行程序,即在某條件下,循環(huán)執(zhí)行某段程序,以處理需要重復(fù)處理的相同任務(wù)。 其基本形式為
    的頭像 發(fā)表于 02-28 16:39 ?2468次閱讀

    詳解Python的for和while循環(huán)

    Python 的 for 和 while 循環(huán)是靈活并且高級的,語法自然、讀起來像偽代碼。而 Cython 也支持 for 和 while,無需修改。但由于循環(huán)通常占據(jù)程序運(yùn)行時(shí)的大部
    的頭像 發(fā)表于 06-24 16:02 ?1504次閱讀

    while循環(huán)

    while 循環(huán)定義:“當(dāng)…時(shí)候,執(zhí)行某段程序”。當(dāng)給定的條件為真時(shí),執(zhí)行循環(huán)體;條件為假時(shí),結(jié)束循環(huán)
    的頭像 發(fā)表于 02-23 14:02 ?3064次閱讀
    <b class='flag-5'>while</b><b class='flag-5'>循環(huán)</b>

    詳解Python中的while循環(huán)

    說起編程語言中的循環(huán),一般 for 循環(huán)用的時(shí)候比較多,因?yàn)橄啾扔?while 循環(huán),for 循環(huán)的代碼量更少。不過有時(shí)候也會(huì)用到
    的頭像 發(fā)表于 04-26 17:55 ?1429次閱讀

    while循環(huán)用法格式

    while循環(huán)是一種常用的循環(huán)結(jié)構(gòu),能夠按照指定條件多次重復(fù)執(zhí)行一段代碼。它的一般用法格式如下: while 條件表達(dá)式:循環(huán)體 在執(zhí)行
    的頭像 發(fā)表于 11-22 10:02 ?1961次閱讀

    c語言在while中嵌套if循環(huán)

    C語言是一種廣泛使用的面向過程編程語言,它提供了許多控制結(jié)構(gòu)來幫助程序員實(shí)現(xiàn)復(fù)雜的邏輯和流程控制。其中,while循環(huán)和if語句是非常常見和重要的控制結(jié)構(gòu)。本文將詳細(xì)介紹C語言中在while
    的頭像 發(fā)表于 11-22 10:09 ?6285次閱讀

    為什么HashMap會(huì)產(chǎn)生死循環(huán)呢?

    死循環(huán)問題發(fā)生在 JDK 1.7 版本中,造成這個(gè)問題主要是由于 HashMap 自身的運(yùn)行機(jī)制,加上并發(fā)操作,從而導(dǎo)致了死循環(huán)
    的頭像 發(fā)表于 12-21 09:06 ?845次閱讀
    為什么HashMap會(huì)產(chǎn)生<b class='flag-5'>死循環(huán)</b>呢?

    arduino中while循環(huán)怎么跳出

    Arduino 是一款開源的硬件平臺,廣泛應(yīng)用于各種物聯(lián)網(wǎng)和嵌入式系統(tǒng)項(xiàng)目。在 Arduino 上編寫代碼時(shí),循環(huán)結(jié)構(gòu)起到了至關(guān)重要的作用。而其中的 while 循環(huán)更是常用于需要根據(jù)特定條件重復(fù)
    的頭像 發(fā)表于 02-14 16:22 ?2635次閱讀

    為何國外工程師偏愛使用for(;;)來實(shí)現(xiàn)MCU死循環(huán)?

    一位工程師發(fā)現(xiàn),國外工程師在給demo在做死循環(huán)時(shí)用的是for(;;),而不是常用的while(1)。這僅僅是個(gè)人習(xí)慣的問題,還是有更深層次的含義?
    發(fā)表于 04-01 11:26 ?669次閱讀
    為何國外工程師偏愛使用for(;;)來實(shí)現(xiàn)MCU<b class='flag-5'>死循環(huán)</b>?

    聊聊MCU死循環(huán),用for(;;)還是while(1)?

    首先,問大家一個(gè)問題:你們寫單片機(jī)程序【死循環(huán)】時(shí),喜歡用for(;;)還是while(1)?快來為你喜歡用的【死循環(huán)】打call,評論區(qū)等你哦~一位工程師發(fā)現(xiàn),國外工程師在給demo在做死循
    的頭像 發(fā)表于 04-29 08:10 ?1395次閱讀
    聊聊MCU<b class='flag-5'>死循環(huán)</b>,用for(;;)還是<b class='flag-5'>while</b>(1)?