我在bash脚本中发出wget命令,虽然它说一切顺利,我找不到文件!
我有一个像这样的目录结构:
/home/foo/.x/.y
在/home/foo/.x
中,我有bash脚本xy.sh
,内容为:
#!/bin/bash
cd /home/foo/.x/.y
echo "Start job at: $(date)" >> /home/foo/.log.log
URL1="http://xyz1.com/11.csv.zip"
URL2="http://xyz2.com/111.csv.zip"
URL3="http://xyz3.com/1111.csv.zip"
URL4="http://xyz4.com/11111.csv.zip"
URL5="http://xyz5.com/111111.csv.zip"
URL6="http://xyz6.com/1111111.csv.zip"
URL7="http://xyz7.com/11111111.zip"
wget -q "${URL1}"
echo " job 1 done: $(date)" >> /home/foo/.log.log
wget -q "${URL2}"
echo "job 2 done at: $(date)" >> /home/foo/.log.log
wget -q "${URL3}"
echo " job 3 done at: $(date)" >> /home/foo/.log.log
wget -q "${URL4}"
echo " job 4 done at: $(date)" >> /home/foo/.log.log
wget -q "${URL5}"
echo " job 5 done at: $(date)" >> /home/foo/.log.log
wget -q "${URL6}"
echo " job 6 done at: $(date)" >> /home/foo/.log.log
wget -q "${URL7}"
echo "End job at: $(date)" >> /home/foo/.log.log
exit 0
日志表明文件已下载但我找不到/home/foo/.x/.y
PS:当我用wget正常下载文件时(没有bash脚本),文件下载很好..
仅供参考:服务器是仅限IPV6的服务器..
答案 0 :(得分:1)
在您的脚本中,您只有一系列没有逻辑依赖关系的命令。例如,在检索URL1之后,即使wget失败,也会显示该消息。 尝试替换这个:
wget -q "${URL1}"
echo " job 1 done: $(date)" >> /home/foo/.log.log
用这个:
wget -q "${URL1}" \
&& echo " job 1 done: $(date)" >> /home/foo/.log.log \
|| echo " job 1 Failed $(date)" >> /home/foo/.log.log \
"&&"和" ||"用于有条件地执行" echo"命令。如果wget成功,那么"完成"否则"失败"。
因为你使用" -q" wget的选项你不会看到它失败的原因,所以在你弄清楚失败之前我建议删除' -q'所以你可以看到输出,如下所示:
wget "${URL1}" >> /home/foo/.log.log 2>&1 \
&& echo " job 1 done: $(date)" >> /home/foo/.log.log \
|| echo " job 1 Failed $(date)" >> /home/foo/.log.log \
所有信息都将存储在日志中。
答案 1 :(得分:0)
/home/foo/.x/.y存在吗?
如果从wget中删除-q选项会发生什么?
为了排除故障,我建议添加"设置-ueo"在#!/ bin / bash shebang下方 - 这将使您更清楚地了解问题所在。