【需求】 编写一个能接受两个参数的脚本:
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
为什么单片机的主程序是死循环
任何一个可用程序都必然是死循环程序,这不仅仅是指单片机程序。因为任何微处理器系统一旦开机,系统都在处理内部事件和外设响应,这个过程是一个循环过程,除非关机才能结束这个死循环程序。因此,对于单片机编程必须注意以下几点
发表于 07-15 17:38
•5299次阅读
单片机的死循环有什么作用
单片机是可编程器件,在使用时需要编写满足需求的程序。其C语言程序在各个端口、配置初始化完成后,会进入一个死循环,一般用while(1){;}的形式。初始化完成后,单片机就在死循环内一遍又一遍的执行程序逻辑。复位后,就从头开始,初
发表于 08-09 17:01
•5682次阅读
python while循环详解
python while循环 while 语句用于循环执行程序,即在某条件下,循环执行某段程序,以处理需要重复处理的相同任务。 其基本形式为
详解Python的for和while循环
Python 的 for 和 while 循环是灵活并且高级的,语法自然、读起来像伪代码。而 Cython 也支持 for 和 while,无需修改。但由于循环通常占据程序运行时的大部
详解Python中的while循环
说起编程语言中的循环,一般 for 循环用的时候比较多,因为相比于 while 循环,for 循环的代码量更少。不过有时候也会用到
while循环用法格式
while循环是一种常用的循环结构,能够按照指定条件多次重复执行一段代码。它的一般用法格式如下: while 条件表达式:循环体 在执行
c语言在while中嵌套if循环
C语言是一种广泛使用的面向过程编程语言,它提供了许多控制结构来帮助程序员实现复杂的逻辑和流程控制。其中,while循环和if语句是非常常见和重要的控制结构。本文将详细介绍C语言中在while循
arduino中while循环怎么跳出
Arduino 是一款开源的硬件平台,广泛应用于各种物联网和嵌入式系统项目。在 Arduino 上编写代码时,循环结构起到了至关重要的作用。而其中的 while 循环更是常用于需要根据特定条件重复
为何国外工程师偏爱使用for(;;)来实现MCU死循环?
一位工程师发现,国外工程师在给demo在做死循环时用的是for(;;),而不是常用的while(1)。这仅仅是个人习惯的问题,还是有更深层次的含义?
发表于 04-01 11:26
•584次阅读
聊聊MCU死循环,用for(;;)还是while(1)?
首先,问大家一个问题:你们写单片机程序【死循环】时,喜欢用for(;;)还是while(1)?快来为你喜欢用的【死循环】打call,评论区等你哦~一位工程师发现,国外工程师在给demo在做死循
评论