【需求】 编写一个能接受两个参数的脚本:
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文章
1868浏览量
33753 -
脚本
+关注
关注
1文章
407浏览量
29050
原文标题:巧用while死循环
文章出处:【微信号:aming_linux,微信公众号:阿铭linux】欢迎添加关注!文章转载请注明出处。
发布评论请先 登录
为什么while(ADC_GetFlagStatus(ADC1, ADC_FLAG_EOC)==RESET)死循环?
为什么单片机的主程序是死循环
单片机的死循环有什么作用
python while循环详解
详解Python的for和while循环
详解Python中的while循环
while循环用法格式
c语言在while中嵌套if循环
arduino中while循环怎么跳出
为何国外工程师偏爱使用for(;;)来实现MCU死循环?
聊聊MCU死循环,用for(;;)还是while(1)?

巧用while死循环
评论