我使用一个函数来解析一个文件,该文件包含要下载的所需文件名列表。我正在使用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
答案 0 :(得分:0)
我不知道更好的一个。您可以使用wget而不是curl,但curl功能更强大。
你可以使用nohup(例如nohup curl -o Downloads / $ FILECATNAME $ DLADDR)。如果不将输出重定向到特定文件,它将存储在nohup.out中。通过在命令末尾添加一个&符号(&amp;),您也可以让它在后台运行,因此即使您断开与服务器的连接,命令仍会执行。
你可以使用类似test ... exists.Or你可以用grep检查你的nohup.out是否有错误或其他任何东西。
我希望这能以任何方式帮助你。
欢呼声