bash下载文件ftp url

时间:2014-02-23 22:54:34

标签: bash curl ftp

我使用一个函数来解析一个文件,该文件包含要下载的所需文件名列表。我正在使用curl下载它们但有更好的方法吗?显示的输出没问题但输出没有显示的方法?如果找不到文件,有没有办法处理异常,如果发生了什么事情,可以继续下载下一个文件?可能想忽略我为获得正确的链接名称所做的事情,这很痛苦。目录模式具有文件名称的模式。

#!/bin/bash
# reads from the file and assigns to $MYARRAY and download to Downloads/*

FILENAME=$1
DLPATH=$2
VARIABLEDNA="DNA"
index=0

function Download {

VARL=$1
#VARL=$i
echo $VARL
VAR=${VARL,,}
echo $VAR
VAR2=${VAR:1:2}
echo $VAR2
HOST=ftp://ftp.wwpdb.org/pub/pdb/data/structures/divided/pdb/
HOSTCAT=$HOST$VAR2

FILECATB='/pdb'
FILECATE='.ent.gz'
NOSLASH='pdb'
DLADDR=$HOSTCAT$FILECATB$VAR$FILECATE
FILECATNAME=$NOSLASH$VAR$FILECATE
echo $DLADDR

curl -o Downloads/$FILECATNAME $DLADDR

gunzip Downloads/$FILECATNAME


}

mkdir -p Downloads



while read line ; do
        MYARRAY[$index]="$line"
        index=$(($index+1))
done < $FILENAME

echo "MYARRAY is: ${MYARRAY[*]}"
echo "Total pdbs in the file: ${index}"

for i in "${MYARRAY[@]}"
do
    Download $i
done

我正在尝试将日志文件写入我在下载之前创建的文件夹,但它似乎没有在文件夹中创建。它写入正在执行的文件的根目录,也不能正确写入。我的语法可能有误?

curl -o Downloads/$FILECATNAME $DLADDR >> Downloads\LOGS\$LOGFILE 2>&1

1 个答案:

答案 0 :(得分:0)

哦,首先,我不确定我是否做得好,但我会试一试:

  • 我正在使用curl下载它们,但有更好的方法吗?

我不知道更好的一个。您可以使用wget而不是curl,但curl功能更强大。

  • 显示的输出没问题,但是输出没有显示?

你可以使用nohup(例如nohup curl -o Downloads / $ FILECATNAME $ DLADDR)。如果不将输出重定向到特定文件,它将存储在nohup.out中。通过在命令末尾添加一个&符号(&amp;),您也可以让它在后台运行,因此即使您断开与服务器的连接,命令仍会执行。

  • 如果找不到文件,是否可以处理异常,如果发生某事,可以继续下载下一个文件?

你可以使用类似test ... exists.Or你可以用grep检查你的nohup.out是否有错误或其他任何东西。

我希望这能以任何方式帮助你。

欢呼声