从字符串使用url字符串时出现卷曲错误

时间:2013-10-11 01:39:14

标签: json bash shell curl

我现在正在使用bash shell脚本测试一些restful API。 我想从文件中读取url,然后使用文件中的url创建一个json数据字符串。 对于测试,下面的代码工作正常。它不是从文件中读取的。

#!/bin/bash  
URL=http://test.com/test.jpg
curl -X POST \
-H "Content-Type:application/json" \
-H "accept:application/json" \
--data '{"url":"'"$URL"'"}' \
http://api.test.com/test

但是,当我使用如下代码时,它会返回一些错误。

#!/bin/bash  
FILE=./url.txt
cat $FILE | while read line; do 
echo $line # or whaterver you want to do with the $line variable
curl -X POST \
-H "Content-Type:application/json" \
-H "accept:application/json" \
--data '{"url":"'"$line"'"}' \
http://api.test.com/test
done

但是,当我使用读取文件中的字符串时,它会返回错误。 这是错误消息。

  
    

非法的非引用字符((CTRL-CHAR,代码13)):必须使用反斜杠进行转义才能包含在字符串值中      在[来源:org.apache.catalina.connector.CoyoteInputStream@27eb679c; line:1,column:237]

  

如何解决这个问题? 当我从文件读取中使用字符串时为什么会返回错误?

1 个答案:

答案 0 :(得分:0)

您的文件似乎是带有\n\r行终止符的dos格式。尝试在其上运行dos2unix以剥离\r。此外,无需cat文件,使用重定向,如此

while read -r line; do 
echo $line # or whaterver you want to do with the $line variable
curl -X POST \
-H "Content-Type:application/json" \
-H "accept:application/json" \
--data '{"url":"'"$line"'"}' \
http://api.test.com/test
done < "$FILE"

另外,将-r传递给read以防止反斜杠转义