【问题标题】:Bash: curl: illegal characters in URLBash:curl:URL中的非法字符
【发布时间】:2017-04-05 21:39:13
【问题描述】:

我有一个包含一列 url 的文件,我使用以下 bash 脚本读取了该文件:

while read line
do
        result=`curl $line -I | grep HTTP/1.1` # save the curl result
        printf '%s,%s\n' $line $result >> output.csv

done < $input_file

当我运行脚本时,出现错误:curl: (3) Illegal characters found in URL。

我的网址示例如下:http://stackoverflow.com/

【问题讨论】:

  • result=$(curl $line -I | grep HTTP/1.1) 呢?
  • @fvu 不。当然,您可以在反引号中使用管道,并且您链接的 Q 本质上是关于将带有管道的命令存储在变量中。不过,用$(...) 替换反引号会更现代。
  • @TonyGW 我感觉您遇到了引用问题。尝试在所有内容周围加上正确的引号:while IFS='' read -r lineresult=$(curl "$line" -I | grep "HTTP/1.1")printf "%q, %q\n" "$line" "$result" &gt;&gt; output.csv,并告诉我们问题是否仍然存在。

标签: bash csv curl


【解决方案1】:

我不确定它是否解决了您的问题,但这是基于我的评论的答案:

替换你的result='curl $line -I | grep HTTP/1.1'

与:result=$(curl $line -I | grep HTTP/1.1)

为了安全起见,还将 grep 文本放在 qoutes 中,并像这样使用变量:

result=$(curl ${line} -I | grep "HTTP/1.1")

【讨论】:

    猜你喜欢
    • 2012-05-16
    • 2011-03-15
    • 2013-03-03
    • 1970-01-01
    • 2012-07-20
    • 2019-08-30
    • 2013-10-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多