我试图逐行解析文本文件中的大约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 `;&'
答案 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