如何检查url中的文件是否存在

时间:2016-05-20 11:41:59

标签: bash

我正在尝试使用wget检查网址中是否存在文件,但是它提供的结果并不符合预期。

结果为Spider mode enabled. Check if remote file exists.

我正在使用的命令是:

cd $path

if [ $? -eq 0 ]; then
    touch laber.txt
    if [ $? -eq 0 ]; then
        echo $key >> laber.txt
        if [ $? -eq 0 ]; then
            wget -S --spider $url/laber.txt 2>&1 | grep -q 'HTTP/1.0 200 OK'
            if [ $? -eq 0 ]; then
                echo OK;
            else
                rm -r laber.txt
                echo FAIL;
            fi
        else
            echo 'test';
        fi
    else
      echo '3';
    fi
else
    echo '4';
fi

1 个答案:

答案 0 :(得分:1)

简单的方法。想法是grep在请求的URL上wget的标头输出上,并获得操作的返回码。

带有grep

-q将以静默模式运行,即如果找到,则不会将搜索字符串输出到stdout

一个花哨的单行可以做到这一点

#!/bin/bash

wget -S --spider $1 2>&1 | grep -q 'HTTP/1.0 200 OK' && echo SUCCESS || echo FAIL

<强> 确认: -

$ ./script.sh www.go3463tgogle.com
FAIL
$ ./script.sh www.google.com
SUCCESS

传统方式: -

#!/bin/bash

wget -S --spider $1 2>&1 | grep -q 'HTTP/1.0 200 OK'

if [ $? -eq 0 ]; then
    echo OK
else
    echo FAIL
fi

<强> 确认: -

$ ./script.sh www.go3463tgogle.com
FAIL
$ ./script.sh www.google.com
OK

您可以将任何实际的url与脚本一起用于您的案例。