BASH - curl命令无法使用for循环

时间:2017-03-09 13:55:38

标签: bash

我需要在名为paths.txt的文件中检查某些链接的状态,我写了一个简单的for循环但是没有工作

for LINK in $(cat paths.txt)
do
  CURL="$(curl -I $LINK 2>/dev/null | head -n 1 | cut -d$' ' -f2)"
  if [ "${CURL}" = "200" ]
  then
    echo ${LINK} >> true.txt
  else
    echo ${LINK} >> false.txt
  fi
done

如果我从终端启动curl命令,我会读取正确的状态,相反如果我回显CURL变量我没有任何输出

2 个答案:

答案 0 :(得分:1)

运行如下脚本:bash -x myscript并观察执行的命令。

答案 1 :(得分:0)

请勿在bash脚本中使用 cat ,因为这是不好的做法,可能是大文件的问题。

SCRIPTDIR=`dirname -- "$0"`
for siteUrl in $( < "$SCRIPTDIR/paths.txt")
do
    if [[ -z "$siteUrl" ]]; then break; fi
    if [[ "$(curl --write-out "%{http_code}\n" --silent --output /dev/null ${siteUrl} )" = "200" ]];  then
        echo ${siteUrl} >> true.txt
    else
        echo ${siteUrl} >> false.txt
    fi
done