Bash:打开另一个文件中列出的名称

时间:2016-05-22 19:25:41

标签: linux bash

我有一个文件,其中包含稍后要打开的文件名列表。 在我将变量(文件名)加载到变量之后,由于我不知道的原因,我以后无法将其作为文件打开。

以下是我尝试做的简化示例:

主要文件的内容:

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

1 个答案:

答案 0 :(得分:1)

^M个字符是回车符(a.k.a。\r),通常是Windows行结尾的一部分。当你echo时它们没有显示出来,但它们会破坏你打开文件的能力,最后文本包含它。

最好的解决方案是从“主文件”中删除它们。您可以使用dos2unix工具,或者您可以使用sed -i -e 's/\s+$//g' $main_file之类的GNU sed进行编辑,并从末尾删除额外的空格(包括^M)每一行。