在bash脚本中使用URLS

时间:2014-08-21 16:30:52

标签: bash shell curl

我试图逐行解析文本文件中的大约6000个URL并返回其http状态代码。我大部分时间都在工作,但是当我的脚本遇到分号和其他各种符号时,它会破坏脚本。我想知道是否有办法确保它逃脱这些字符仍然允许cURL正常运行?

到目前为止,这是我的代码:

#!/bin/bash
while read line
do
    name=$line
    test="curl -s -o /dev/null -I -w "%{http_code}" $name"
    eval "$test"
done < $1

这是一个错误示例:

./checkURL.sh: eval: line 6: `curl -s -o /dev/null -I -w %{http_code} http://xtblast.com/ptv/?attachment_id=855&repl&replytoco;&replytocom=32954'
./checkURL.sh: eval: line 6: syntax error near unexpected token `;&'

1 个答案:

答案 0 :(得分:1)

报价太多了。请改为使用单引号:

test="curl -s -o /dev/null -I -w %{http_code} '$name'"

为了熟悉评论,使用如下脚本应该足够了:

#!/bin/bash
while read line
do
    /usr/bin/curl -s -o /dev/null -I -w %{http_code} -- "$line"
done < $1