Linux 带有errorlevelbash输出的wget

Linux 带有errorlevelbash输出的wget,linux,bash,centos,Linux,Bash,Centos,我想创建一个bash文件(.sh),该文件执行以下操作: 我将脚本称为./download.sh www.blablabla.com/bla.jpg 如果文件已下载或未下载,脚本必须回显 我该怎么做?我知道我可以使用errorlevel,但我是linux新手,所以 提前谢谢 Linux中的应用程序通常会设置环境变量$的值?一旦失败。您可以检查此返回代码,看看它是否为wget带来任何错误 #!/bin/bash wget $1 2>/dev/null export RC=$? if [ "$

我想创建一个bash文件(.sh),该文件执行以下操作:

我将脚本称为./download.sh www.blablabla.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。用你想下载的文件名调用它/下载www.sh.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
,您可能真的希望在测试时看到它,特别是当您收到一封电子邮件说它失败时:)

一种解决方案是处理“-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”。这不是最好的方法,但对于测试解决方案来说效果不错。

ok。。你能给我举个例子吗,所以当文件被下载时,脚本echo的“OK”或者类似“FAILED”的东西……将脚本更改为“OK”并且失败了。这是一个更好的例子。@CyberK:您可能还想禁止wget输出:
wget$12>/dev/null
没有理由导出该变量。事实上,不需要变量:
如果[$?=0]