0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

巧用while死循环

阿铭linux 来源:阿铭linux 作者:阿铭linux 2022-12-21 09:14 次阅读

【需求】 编写一个能接受两个参数的脚本:

1)第一个参数为URL,即可下载的文件;第二个参数为目录,即下载后保存的位置;

2)如果用户给的目录不存在,则提示用户是否创建;如果创建就继续执行,否则直接退出脚本,返回值为1;

3)如果给的目录存在,则下载文件;下载命令执行结束后测试文件下载成功与否;如果成功,返回值为0,否则返回值为2;

【分析】

1)脚本要有判断参数个数的过程,2个参数缺一不可;

2)判断给定目录是否存在,当目录不存在,则需要自动创建,此时是需要跟用户交互的,所以要使用read,让用户提供指令,这个指令的判断就需要考虑到多种情况。此时就需要使用while死循环;

【参考脚本】

#!/bin/bash
if [ $# -ne 2 ]
then
    echo "脚本需要提供两个参数,第一个参数为下载地址,第二个参数为下载目标目录"
    exit 3
fi
while :
do
    if [ -d $2 ]
    then
        break
    else
        read -p "目录不存在,是否要创建?(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死循环非常有用,在工作中使用场景非常多,所以请你一定要搞懂它的用法哈!

审核编辑:汤梓红

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 参数
    +关注

    关注

    11

    文章

    1773

    浏览量

    32075
  • 脚本
    +关注

    关注

    1

    文章

    387

    浏览量

    14829

原文标题:巧用while死循环

文章出处:【微信号:aming_linux,微信公众号:阿铭linux】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    为什么while(ADC_GetFlagStatus(ADC1, ADC_FLAG_EOC)==RESET)死循环

    为啥while(ADC_GetFlagStatus(ADC1, ADC_FLAG_EOC)==RESET)死循环
    发表于 05-14 06:01

    关于死循环语句

    do{..........} while(1) 和for(;;)[..............]这两个语句都代表死循环吧都是一样的意思吧!
    发表于 09-26 17:37

    跳不出的 while 循环

    STM32F103 跳不出的 while 循环
    发表于 12-09 18:38 0次下载

    为什么单片机的主程序是死循环

    任何一个可用程序都必然是死循环程序,这不仅仅是指单片机程序。因为任何微处理器系统一旦开机,系统都在处理内部事件和外设响应,这个过程是一个循环过程,除非关机才能结束这个死循环程序。因此,对于单片机编程必须注意以下几点
    发表于 07-15 17:38 5299次阅读

    单片机的死循环有什么作用

    单片机是可编程器件,在使用时需要编写满足需求的程序。其C语言程序在各个端口、配置初始化完成后,会进入一个死循环,一般用while(1){;}的形式。初始化完成后,单片机就在死循环内一遍又一遍的执行程序逻辑。复位后,就从头开始,初
    发表于 08-09 17:01 5682次阅读
    单片机的<b class='flag-5'>死循环</b>有什么作用

    python while循环详解

    python while循环 while 语句用于循环执行程序,即在某条件下,循环执行某段程序,以处理需要重复处理的相同任务。 其基本形式为
    的头像 发表于 02-28 16:39 2428次阅读

    详解Python的for和while循环

    Python 的 for 和 while 循环是灵活并且高级的,语法自然、读起来像伪代码。而 Cython 也支持 for 和 while,无需修改。但由于循环通常占据程序运行时的大部
    的头像 发表于 06-24 16:02 1463次阅读

    while循环

    while 循环定义:“当…时候,执行某段程序”。当给定的条件为真时,执行循环体;条件为假时,结束循环
    的头像 发表于 02-23 14:02 2980次阅读
    <b class='flag-5'>while</b><b class='flag-5'>循环</b>

    详解Python中的while循环

    说起编程语言中的循环,一般 for 循环用的时候比较多,因为相比于 while 循环,for 循环的代码量更少。不过有时候也会用到
    的头像 发表于 04-26 17:55 1357次阅读

    while循环用法格式

    while循环是一种常用的循环结构,能够按照指定条件多次重复执行一段代码。它的一般用法格式如下: while 条件表达式:循环体 在执行
    的头像 发表于 11-22 10:02 1717次阅读

    c语言在while中嵌套if循环

    C语言是一种广泛使用的面向过程编程语言,它提供了许多控制结构来帮助程序员实现复杂的逻辑和流程控制。其中,while循环和if语句是非常常见和重要的控制结构。本文将详细介绍C语言中在while
    的头像 发表于 11-22 10:09 5703次阅读

    为什么HashMap会产生死循环呢?

    死循环问题发生在 JDK 1.7 版本中,造成这个问题主要是由于 HashMap 自身的运行机制,加上并发操作,从而导致了死循环
    的头像 发表于 12-21 09:06 744次阅读
    为什么HashMap会产生<b class='flag-5'>死循环</b>呢?

    arduino中while循环怎么跳出

    Arduino 是一款开源的硬件平台,广泛应用于各种物联网和嵌入式系统项目。在 Arduino 上编写代码时,循环结构起到了至关重要的作用。而其中的 while 循环更是常用于需要根据特定条件重复
    的头像 发表于 02-14 16:22 2382次阅读

    为何国外工程师偏爱使用for(;;)来实现MCU死循环

    一位工程师发现,国外工程师在给demo在做死循环时用的是for(;;),而不是常用的while(1)。这仅仅是个人习惯的问题,还是有更深层次的含义?
    发表于 04-01 11:26 584次阅读
    为何国外工程师偏爱使用for(;;)来实现MCU<b class='flag-5'>死循环</b>?

    聊聊MCU死循环,用for(;;)还是while(1)?

    首先,问大家一个问题:你们写单片机程序【死循环】时,喜欢用for(;;)还是while(1)?快来为你喜欢用的【死循环】打call,评论区等你哦~一位工程师发现,国外工程师在给demo在做死循
    的头像 发表于 04-29 08:10 1200次阅读
    聊聊MCU<b class='flag-5'>死循环</b>,用for(;;)还是<b class='flag-5'>while</b>(1)?