gpt4 book ai didi

linux - Wget 能否返回 true 或 false(0 或 1)

转载 作者:太空宇宙 更新时间:2023-11-04 09:40:49 26 4
gpt4 key购买 nike

大家好,我真的很想知道 wget 是否只能在处理某些 url 后返回 true 或 false(0 或 1)。我的想法是创建一个小的 PERL 脚本来监视我的几个网页并发送电子邮件或某种警报(我仍在开发过程中)。这是我目前所拥有的:

#!usr/bin/perl
use strict;
use warnings;
#use LWP::Simple;

my $url='google.com';

system('wget --delete -q $url');
print "$?";
if($? != 0 )
{
print "false\n";
}

else
{
print "OK\n";
}

这只是开始,但我正在努力让它尽可能安静,输出越少越好。这是我现在的输出: 尝试 `wget --help' 以获得更多选项。 256 错误的任何帮助将不胜感激。它也不一定是 wget,但这是我目前所知道的。

最佳答案

$url 未插入单引号字符串文字,因此您运行了 shell 命令

wget --delete -q $url

除非有环境变量url,这会执行带有两个参数--delete-q 的命令wget 。 Wget 提示“缺少 URL”(您省略了一些错误行)并返回状态代码 1。

变量$?包含命令的状态代码,乘以 256。更准确地说,它是 wait system call 返回的值. $? 为零表示成功,您说对了。失败可以是 1 以外的代码:任何非零值都表示失败。

如果你不想看到任何输出,将输出和错误重定向到/dev/null:

system("wget --delete -q $url >/dev/null 2>/dev/null");

但是隐藏错误不是一个好主意:如果你这样做,你就无法诊断它们。您可以通过仅重定向 stdout 来安静正常输出而不隐藏错误。但是 wget 的 -q 选项已经做到了这一点。

system("wget --delete -q $url");
if ($?) {
print "false\n";
} else {
print "OK\n";
}

此代码假定 $url 不包含 shell 特殊字符。如果您不能保证这一点,请保护所有 shell 特殊字符:

system('wget --delete -q ' . quotemeta($url) . ' >/dev/null 2>/dev/null');

或者,如果您不忽略错误消息,则使用 system 的多参数形式完全跳过 shell:

system('wget', '--delete', '-q ', $url);

关于linux - Wget 能否返回 true 或 false(0 或 1),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21719293/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com