shell脚本:创建函数并指定目录进行下载

写一个脚本:

1、创建一个函数,能接受两个参数:

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

2)如果用户给的目录不存在,则提示用户是否创建;如果创建就继续执行,否则,函数返回一个51的错误值给调用脚本;

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

题目来源于51cto论坛帖子,参考大神的答案,然后自己完善做出来了,大家有更优秀的方法也不妨写出来。

#!/bin/bash
#writen by mofansheng @2015-08-10
url=$1
dir=$2
download()
{
        cd $dir &>/dev/null
        if [ $? -ne 0 ]
        then
        read -p "$dir No such file or directory,create now?(y/n)" answer
                if [ "$answer" ==  "y" ];then
                mkdir -p $dir
                cd $dir
                wget $url &>/dev/null
                        if [ $? -ne 0 ];then
                        return "52"
                        fi
                else
                return "51"
                fi
        else
        wget $url &>/dev/null
                if [ $? -ne 0 ];then
                return "52"
                fi
        fi
}
download $url $dir
echo $?

好多if判断有点迷糊了;


验证结果:

目录存在,则返回0,下载文件到已存在的目录里;

[[email protected] ~]# sh 1.sh http://www.baidu.com/index.php yong
0
[[email protected] ~]# ls yong/
index.php

目录不存在,提示是否要创建,选n不创建,则返回51;

[[email protected] ~]# sh 1.sh http://www.baidu.com/index.php fan
fan No such file or directory,create now?(y/n)n
51

目录不存在,提示是否要创建,选y创建,并且下载文件到新创建的目录里;

[[email protected] ~]# sh 1.sh http://www.baidu.com/index.php fan
fan No such file or directory,create now?(y/n)y
0
[[email protected] ~]# ls fan/
index.php

下载文件不成功,则返回52;

[[email protected] ~]# sh 1.sh http://www.baidu.com/xxxx.php 
fan52
时间: 2024-10-02 16:18:02

shell脚本:创建函数并指定目录进行下载的相关文章

【我的技术我做主】shell脚本:创建函数并指定目录进行下载

使用nginx做负载均衡器,代理web服务器,用户请求的数据都指向nginx负载均衡器,nginx负责调度后端的web服务器提供服务. 环境搭建及说明: nginx负载均衡器LNMP环境或只安装nginx服务:两块网卡,192.168.11.30(模拟公网ip),192.168.20.30(内网) web服务器LAMP环境1:ip地址为内网 192.168.20.10 apache为2.4版本 web服务器LAMP环境2:ip地址为内网 192.168.20.11 web服务器LAMP环境3:i

shell脚本第二篇——将指定目录下大于200K的文件移动到/tmp下

shell脚本第二篇--将指定目录下大于200K的文件移动到/tmp下 # vim  /tmp/files.sh #!/bin/bash #将指定目录下大于200K的文件移动到/tmp下 read  -p  "请输入您要将目录下大于200K文件移动的目录路径:" $1 for FILE in `ls  $1` do if [ -f  $FILE ] ; then if [ `ls -l $FILE | awk `{print $5}` -gt 204800 ] ; then mv  $

用shell脚本创建用户

用shell脚本创建20个用户,要求给20个用户指定家目录为/share/home/中,并且给每一个用户随机指定一个密码,最后把这些用户信息记录在日志里! [[email protected] sbin]# vim 2.sh          mkdir -p  /share/home else         mkdir -p  /share/home fi create_user(){ for i in `seq 3 6` ;do         useradd -d /share/home

shell脚本中获取当前所在目录地址

shell脚本中获取当前所在目录如下 #!/bin/bash work_path=$(dirname $0) cd ${work_path} work_path=$(pwd) cd ${work_path}/src 原文地址:https://www.cnblogs.com/zhangshiwen/p/9064161.html

Shell脚本通过参数传递调用指定函数

我们在写一些功能性脚本的时候,往往会把操作相似或者参数类似行为接近的函数放在同一个shell脚本中,这样管理方便,维护简单,也很清晰.对于这种情况,通常的办法是,在shell脚本中定义所有用到的函数,然后在正文代码中用case语句读入输入的命令函数参数来调用指定的相应函数.这样就达到一个shell脚本使用的强大功能. 下面以一个简单的例子来说明.一个计算器提供了加减乘除的功能: #!/bin/bash usage="Usage: `basename $0` (add|sub|mul|div|al

Linux中的shell脚本编程——函数

概述: 本章节将总结while,for循环语句的特殊用法,在不同的场景当中,更能发挥其功能和价值.除此之外,还会介绍一种特殊的循环语句select语句,实现菜单的作用.最重要的是讲解shell脚本编程中函数的用法.这些内容都要熟练掌握. 一.循环语句的特殊用法: 1.while循环的特殊用法(遍历文件的每一行): □语法:while read line; do 循环体 done < /PATH/FROM/SOMEFILE □意义:依次读取/PATH/FROM/SOMEFILE文件中的每一行,且将

Linux编程 20 shell编程(shell脚本创建,echo显示信息)

一概述 前面19章里已经掌握了linux系统和命令行的基础知识,从本章开始继续学习shell脚本的基础知识.在大量编辑shell脚本前,先来学习下一些基本概念. 1.1    使用多个命令 Shell可以让多个命令串起来,一次执行完成,可以把它们放在同一行中,用分号隔开,如下所示: 上面就是一个简单的脚本了,用到了两个bash shell命令,但每次运行之前,都必须在命令提示符下输入整个命令.如果将命令组合成一个简单的文本文件,需要时运行这个文本文件就行了. 1.2    创建shell 脚本文

shell脚本的函数介绍和使用案例

#前言:今天我们来聊聊shell脚本中的函数知识,看一下函数的优势,执行过程和相关的使用案例,我们也来看一下shell和python的函数书写方式有什么不同 #简介 1.函数也具有别名类似的功能 2.函数是把程序里多次调用相同的代码部分定义成一份,然后给这份代码定义个名字,如果出现重复的就调用就行了 #函数的优势 1.把相同的程序段定义成函数,可以减少整个程序的代码量 2.可以让程序代码结构更清晰 3.增加程序的可读.易读性.以及管理性 4.可以实现程序功能模块化,不同的程序使用函数模块化 #语

Shell脚本:使用rsync备份文件/目录

本文我们介绍一个shell脚本,用来使用rsync命令将你本地Linux机器上的文件/目录备份到远程Linux服务器上.使用该脚本会以交互的方式实施备份,你需要提供远程备份服务器的主机名/ip地址和文件夹位置.我们使用一个单独的列表文件,在这个文件中你需要列出要备份的文件/目录.我们添加了两个脚本,第一个脚本在每次拷贝完一个文件后询问密码(如果你启用了ssh密钥验证,那么就不会询问密码),而第二个脚本中,则只会提示一次输入密码. 我们打算备份bckup.txt,dataconfig.txt,do