我目前正在处理一个脚本,该脚本读取文件中逐行列出的数百个IP地址。该脚本应该获取IP地址,然后将IP地址及其经度和纬度输出到新文件。但是,每当我尝试运行脚本时,都会收到多个“卷曲:(3)在URL中发现非法字符”。我已经对它进行了几天的故障排除,到目前为止,我什么都没想到。谁能帮助我找出正确的方向?
在此先感谢您的帮助。
这是我正在使用的脚本。
#!/bin/bash
cat ipCheck.txt | while read line
do
curl "https://api.ipstack.com/"$line"access_key=9c04ea7631a32590cac23eb27ec6c104&foraat=1&fields=ip,latitude,longitude"
done >> locations.txt
我当前正在使用具有10个IP地址的测试文本文件。如下
101.249.211.209
102.165.32.39
102.165.35.37
102.165.49.193
103.27.125.18
103.3.61.193
103.78.132.4
104.143.83.13
104.143.83.8
104.149.216.71
答案 0 :(得分:0)
没有任何事情是错误的。您是否尝试过注释掉卷曲线并使用以下命令运行循环:
cat ipCheck.txt | while read line
do
#curl "https://api.ipstack.com/"$line"access_key=9c04ea7631a32590cac23eb27ec6c104&foraat=1&fields=ip,latitude,longitude"
echo "\"$line\""
done >> locations.txt
这应该有助于找到额外的空间或格式有些奇怪的地方。
如果不是文件中的格式,则可以尝试:
cat ipCheck.txt | while read line
do
curl "https://api.ipstack.com/${line}access_key=9c04ea7631a32590cac23eb27ec6c104&foraat=1&fields=ip,latitude,longitude"
done >> locations.txt
这应该得到相同的结果,但是您的环境可能会发生一些奇怪的事情。
答案 1 :(得分:0)
根据先前的评论,一种解决方案是删除所有其他字符,例如回车符\r
并使用printf
进行检查:
while IFS= read -r line; do
# fix `\r` at end
line=$(echo ${line} | tr -d '\r')
printf 'Downloading %q\n' "$line"
./download.sh $FOLDER $line
done < "$DS"