shell指令碼:建立函式並指定目錄進行下載

像教授發表於2017-11-26

寫一個指令碼:

1、建立一個函式,能接受兩個引數:

1)第一個引數為URL,即可下載的檔案;第二個引數為目錄,即下載後儲存的位置;

2)如果使用者給的目錄不存在,則提示使用者是否建立;如果建立就繼續執行,否則,函式返回一個51的錯誤值給呼叫指令碼;

3)如果給的目錄存在,則下載檔案;下載命令執行結束後測試檔案下載成功與否;如果成功,則返回0給呼叫指令碼,否則,返回52給呼叫指令碼;

題目來源於51cto論壇帖子,參考大神的答案,然後自己完善做出來了,大家有更優秀的方法也不妨寫出來。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
#!/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,下載檔案到已存在的目錄裡;

1
2
3
4
[root@localhost ~]# sh 1.sh http://www.baidu.com/index.php yong
0
[root@localhost ~]# ls yong/
index.php

目錄不存在,提示是否要建立,選n不建立,則返回51;

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

目錄不存在,提示是否要建立,選y建立,並且下載檔案到新建立的目錄裡;

1
2
3
4
5
[root@localhost ~]# sh 1.sh http://www.baidu.com/index.php fan
fan No such file or directory,create now?(y/n)y
0
[root@localhost ~]# ls fan/
index.php

下載檔案不成功,則返回52;

1
2
[root@localhost ~]# sh 1.sh http://www.baidu.com/xxxx.php 
fan52






本文轉自 模範生 51CTO部落格,原文連結:http://blog.51cto.com/mofansheng/1683714,如需轉載請自行聯絡原作者


相關文章