使用curl检查bash中是否存在URL列表

时间:2018-05-06 23:31:43

标签: bash curl syntax-error

我正在尝试检查网址列表是否有效。我正在尝试这个Bash,但我没有得到正确的语法。

for url in $(cat domains.txt) 
do curl --output /dev/null --silent --head --fail "$url"; then
  echo "URL exists: $url"
else
  echo "URL does not exist: $url"
done

任何人都可以帮我一把吗?

2 个答案:

答案 0 :(得分:1)

您错过了if(以及相应的fi)以使您的代码正常工作。

#!/bin/bash
for url in $(cat domains.txt) 
do 
  if curl --output /dev/null --silent --head --fail "$url"; then
    echo "URL exists: $url"
  else
    echo "URL does not exist: $url"
  fi 
done

答案 1 :(得分:1)

您也可以让脚本检查每个网址,如果是重定向,则为您提供重定向的网址:

#!/bin/bash
for URL in $(cat urls.txt) ; do 
res="$(curl --silent --head --location --output /dev/null --write-out '%{http_code}'  $URL | grep '^2')"
if [[ $res == 200 ]]; then
curl -s -L -I -o /dev/null -w $URL' -> %{url_effective}\n' $URL;
else
echo "$URL -> "does not exist""
fi 
done

`