巧用while死循环

描述

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

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 "下载失败"
    exit 2
fi

 

本例中的while死循环非常有用,在工作中使用场景非常多,所以请你一定要搞懂它的用法哈!

  审核编辑:汤梓红

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

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分