我现在正在使用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]
如何解决这个问题? 当我从文件读取中使用字符串时为什么会返回错误?
答案 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
以防止反斜杠转义