Bash 当从文件传入变量时,Curl不起作用

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

我不确定为什么使用从文件初始化的变量不起作用。 我编写了一个函数来从一个文件中卷曲域列表(目前只有一行,www.google.com)。但是当从文件中读取$domain时,CURL返回空。当我回显$localvar时,它总是显示正确的值(本例中为www.google.com)。 为了测试,我硬编码了“www.google.com”,CURL确实按照预期返回了页面

我错过了什么?提前谢谢

Bash版本3.2.57(1)-发布

#/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
}