我需要在名为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
变量我没有任何输出
答案 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