wget with errorlevel bash output

我想创建一个bash文件(.sh),它执行以下操作: 我把脚本称为./download.sh www.blabla.com/bla.jpg 如果文件已下载,脚本必须回显... 我怎样才能做到这一点?我知道我可以使用errorlevel但是我是linux新手所以...... 提前致谢!     
已邀请:
通常Linux中的应用程序会设置环境变量$的值?失败了。您可以检查此返回代码,看看它是否为您带来了wget的任何错误。
#!/bin/bash
wget $1 2>/dev/null
export RC=$?
if [ "$RC" = "0" ]; then
   echo $1 OK
else
    echo $1 FAILED
fi
您可以将此脚本命名为download.sh。使用chmod 755将权限更改为755.使用您要下载的文件的名称调用它。 ./download.sh www.google.com     
你可以尝试类似的东西:
#!/bin/sh

[ -n $1 ] || {
    echo "Usage: $0 [url to file to get]" >&2
    exit 1
}

wget $1

[ $? ] && {
  echo "Could not download $1" | mail -s "Uh Oh" you@yourdomain.com
  echo "Aww snap ..." >&2
  exit 1
}

# If we're here, it downloaded successfully, and will exit with a normal status
制作一个(可能)被其他脚本调用的脚本时,重要的是要执行以下操作: 确保论证的健全性 发送电子邮件,写入日志或做其他事情,以便有人知道出了什么问题
>&2
只是将错误消息的输出重定向到
stderror
,这允许调用脚本执行以下操作:
foo-downloader >/dev/null 2>/some/log/file.txt
因为它是一个短的包装,没有理由放弃一点理智:) 这也允许你有选择地将
wget
的输出定向到
/dev/null
,你可能真的想在测试时看到它,特别是如果你收到一封电子邮件说它失败了:)     
wget以非交互方式执行。这意味着wget在后台工作,你不能用$?来捕获de返回代码。 一个解决方案是处理“--server-response”属性,搜索http 200状态代码 例:
wget --server-response -q -o wgetOut http://www.someurl.com
sleep 5
_wgetHttpCode=`cat wgetOut | gawk '/HTTP/{ print $2 }'`
if [ "$_wgetHttpCode" != "200" ]; then
    echo "[Error] `cat wgetOut`"
fi
注意:wget需要一些时间来完成他的工作,因此我把“睡5”。这不是最好的方法,但可以测试解决方案。     

要回复问题请先登录注册