我有一个文件,其中包含稍后要打开的文件名列表。 在我将变量(文件名)加载到变量之后,由于我不知道的原因,我以后无法将其作为文件打开。
以下是我尝试做的简化示例:
主要文件的内容:
http.request()
Bash命令:
family : 6
执行狂:
first_file.txt
second_file.txt
因此,read line < $main_file # file with the list, received as an argument
echo $line # to check that correct filename has been read
cat $line # attempt to dump "first_file.txt" contents <- FAILS
cat first_file.txt # read "first_file.txt" contents manually
有效,first_file.txt
: No such file or directory
*** this is 1st file's contents ***
*** ....
包含&#34; first_file.txt&#34;,但cat first_file.txt
失败...
我显然在这里误解了一些事情,欢迎提出建议!
编辑:
根据要求,这是$line
的输出:
cat $line
答案 0 :(得分:1)
^M
个字符是回车符(a.k.a。\r
),通常是Windows行结尾的一部分。当你echo
时它们没有显示出来,但它们会破坏你打开文件的能力,最后文本包含它。
最好的解决方案是从“主文件”中删除它们。您可以使用dos2unix
工具,或者您可以使用sed -i -e 's/\s+$//g' $main_file
之类的GNU sed进行编辑,并从末尾删除额外的空格(包括^M
)每一行。