Scripting

驗證 URL 是否存在

  • September 16, 2021

我想驗證一個 URL 是否存在而無需下載。我在下面使用curl

if [[ $(curl ftp://ftp.somewhere.com/bigfile.gz) ]] 2>/dev/null;
then
 echo "This page exists."
else
 echo "This page does not exist."
fi

或使用wget

if [[ $(wget ftp://ftp.somewhere.com/bigfile.gz) -O-]] 2>/dev/null;
then
 echo "This page exists."
else
 echo "This page does not exist."
fi

如果 URL 不存在,這很有效。如果存在,它會下載該文件。就我而言,文件非常大,我不想下載它。我只想知道那個 URL 是否存在。

你很近。解決這個問題的正確方法是使用HEAD方法。

使用捲曲:

if curl --head --silent --fail ftp://ftp.somewhere.com/bigfile.gz 2> /dev/null;
then
 echo "This page exists."
else
 echo "This page does not exist."
fi

或使用 wget:

if wget -q --method=HEAD ftp://ftp.somewhere.com/bigfile.gz;
then
 echo "This page exists."
else
 echo "This page does not exist."
fi

我認為,最好將--spider參數與wget工具一起使用。它也適用於該工具的輕量級版本wget(在 BusyBox 中)。

例子:

URL="http://www.google.com"

if wget --spider "${URL}" 2>/dev/null; then
   echo "OK !"
else
   echo "ERROR ! Online URL ${URL} not found !"
fi

引用自:https://unix.stackexchange.com/questions/474805