Bash 错误/非法格式或缺少URL-在自定义卷曲中传递变量值
我在我的Windows10机器上使用Linux外壳(Ubuntu20.04)。我有一个bash脚本,应该Bash 错误/非法格式或缺少URL-在自定义卷曲中传递变量值,bash,ubuntu,curl,ip,windows-subsystem-for-linux,Bash,Ubuntu,Curl,Ip,Windows Subsystem For Linux,我在我的Windows10机器上使用Linux外壳(Ubuntu20.04)。我有一个bash脚本,应该 浏览包含IP列表的.txt文件 使用站点对每个IP进行卷曲,以获得修改后的卷曲输出 #/bin/bash input=“/mnt/d/Docs/BR Resources/iplist.txt” 而IFS=读取-r行 做 卷曲https://ipinfo.io/美元线 完成
#/bin/bash
input=“/mnt/d/Docs/BR Resources/iplist.txt”
而IFS=读取-r行
做
卷曲https://ipinfo.io/美元线
完成<“$input”
循环中每个IP的预期输出为:
{“ip”:“xx.xx.xx.xx”,“主机名”:“c0241.brsol.com”,
“城市”:“阿什本”,
“地区”:“弗吉尼亚州”,
“国家”:“美国”,
“loc”:“xx.xxxx,xx.xxxx”, “组织”:“BR,Inc.”,
“邮政”:“xxxxx”,
“时区”:“美国/纽约”
“自述”:https://ipinfo.io/missingauth“} 但是,我得到的输出是以下错误: curl:(3)使用错误/非法格式的URL或缺少URL iplist.txt的示例摘录
36.13.6.167
252.125.137.71
204.50.68.40
136.122.209.112
203.47.25.30
223.96.93.56
64.137.82.169
11.183.223.40
199.169.87.25
119.198.39.119
问题似乎是$line的值没有与curl命令的其余部分一起传递
如何修复此问题以获得此.txt文件中每个IP的修改的Curl输出?我在生成输出的windows计算机上执行了以下步骤:
已将文件转换为
dos2unix.exe./test.sh
test.sh:
# !/usr/bin/bash
input="iplist.txt"
while IFS= read -r line
do
curl https://ipinfo.io/$line
done < "$input"
bash版本:GNU bash,版本4.3.42(4)-发行版您能提供一个
iplist.txt
的示例吗?首先使用echo运行这个循环:,而IFS=read-r行;“做回声”https://ipinfo.io/$line”;done<“$input”
是DOS/Windows格式的脚本或iplist.txt文件(请参阅)?如果这不是问题,请尝试将set-x
放在脚本的开头,这样脚本可以在运行时打印发生的事情,这有助于找出问题所在。将shebang更改为#/bin/bash-x
以查看有关正在执行的命令的更多详细信息。这很可能是windows的问题:-)@Sandun,\r
表示URL末尾有一个(通常不可见)回车字符,可能是因为ipinfo.txt文件是DOS/windows格式。如果您有dos2unix
命令,它会将文件转换为unix格式。当IFS=$'\r'read…时,您也可以使用来获取read
来为您提取回车。有更多的细节和选项。嗨,你能详细说明第二行吗?是否将文件转换为dos2unix.exe./test.sh?这是否意味着我必须在我的Ubuntu Shell(在Windows机器内)中安装一个名为dos2unix的东西?@Sundun我看到你的Shell脚本是DOS格式(\r/carries return CRLF)而不是unix格式。可能是你使用了一个类似notepad++的编辑器,它将文件制作成DOS格式,因此,我通过操作dos2unix将其转换为一个unix文件。然后,该文件将在unix上正常工作。Dos格式为:CRLF(每行以CR结尾,然后是LF),unix格式为:LF(每行以LF字符结尾)。您可以在ubuntu中使用:sudo apt get install dos2unix
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 300 100 300 0 0 300 0 0:00:01 --:--:-- 0:00:01 532
{
"ip": "36.13.6.167",
"hostname": "kd036013006167.ppp-bb.dion.ne.jp",
"city": "Saitama",
"region": "Saitama",
"country": "JP",
"loc": "35.9081,139.6566",
"org": "AS2516 KDDI CORPORATION",
"postal": "330-0853",
"timezone": "Asia/Tokyo",
"readme": "https://ipinfo.io/missingauth"
} % Total % Received % Xferd Average Speed Time Time Time Current