Bash 当从文件传入变量时,Curl不起作用
我不确定为什么使用从文件初始化的变量不起作用。 我编写了一个函数来从一个文件中卷曲域列表(目前只有一行,www.google.com)。但是当从文件中读取$domain时,CURL返回空。当我回显$localvar时,它总是显示正确的值(本例中为www.google.com)。 为了测试,我硬编码了“www.google.com”,CURL确实按照预期返回了页面 我错过了什么?提前谢谢 Bash版本3.2.57(1)-发布Bash 当从文件传入变量时,Curl不起作用,bash,Bash,我不确定为什么使用从文件初始化的变量不起作用。 我编写了一个函数来从一个文件中卷曲域列表(目前只有一行,www.google.com)。但是当从文件中读取$domain时,CURL返回空。当我回显$localvar时,它总是显示正确的值(本例中为www.google.com)。 为了测试,我硬编码了“www.google.com”,CURL确实按照预期返回了页面 我错过了什么?提前谢谢 Bash版本3.2.57(1)-发布 #/bin/bash 函数processDomains(){ 本地inp
#/bin/bash
函数processDomains(){
本地inputfilepath=$1;
读域时
做
本地localvar=“$domain”
#localvar=“www.google.com”--取消对此行的注释curl命令有效
#echo$localvar---始终正确显示域
本地结果=$(curl-sL“$localvar”);
回显“$domain”“$result”
完成<$inputfilepath
}
乔纳森的评论回答了我的问题。这是由文件中的CRLF结尾引起的。您是否有可能从Windows中获得具有CRLF行结尾的文件?也许Bash将CR保存在$domain
中。您可以在循环中使用echo“[[$domain]]”
,查看右括号是否在输出中放错了位置,这肯定是CR问题的迹象。围绕其他已知的打印字符(我使用了[[[/code>和]
,但选择范围很广)进行回显会有很大帮助。请发布输入文件的内容。@JonathanLeffler你说得对。我把文件的结尾改成了LF,解决了这个问题。非常感谢你!!
#!/bin/bash
function processDomains() {
local inputfilepath=$1;
while read domain
do
local localvar="$domain"
#localvar="www.google.com" --- uncomment this line the curl command works
#echo $localvar --- always display domain correctly
local result=$(curl -sL "$localvar");
echo "$domain" "$result"
done < $inputfilepath
}