wget 出口 errorlevel bash

我想创建一个文件 bash /.sh/, 这是以下内容:

我称之为脚本。 / download.sh www.blabla.com/bla.jpg

如果文件已加载或不...,则该脚本应该是回声信号...

我怎样才能做到这一点? 我知道我可以使用 errorlevel, 但我是新的 linux so...

先感谢您!
已邀请:

小明明

赞同来自:

通常是应用B. 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. 改变权限 755 团队 chmod 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 [url=http://www.someurl.com]http://www.someurl.com[/url]
sleep 5
_wgetHttpCode=`cat wgetOut | gawk '/HTTP/{ print $2 }'`
if [ "$_wgetHttpCode" != "200" ]; then
echo "[Error] `cat wgetOut`"
fi


笔记: wget 需要一些时间来完成他们的工作,因为这是我的原因 "sleep 5". 这不是做到这一点的最佳方式,但它可以很好地测试解决方案。

要回复问题请先登录注册