从Windows bash中形成的文本文件中读取内容
这个问题在这里已经有了答案:
这听起来像你的id_numbers.txt文件具有DOS / Windows风格的行结束符(回车符后面是换行字符),而不是普通的unix行结束符(只是换行符)。 结果是, read
认为该行以回车结束, $line
实际上在最后有一个回车符,并且嵌入在url中,导致各种混淆。
有几种方法可以解决这个问题。 当你使用它时,你可以使用bash修改变量的回车符:
url="http://www.rcsb.org/pdb/files/${line%$'r'}.pdb"
或者你可以有read
的告诉它回车计为空白(修剪read
将削减领先,并从它读取尾随空白):
while IFS=$'r' read line
或者你可以使用像dos2unix这样的命令(或者你的操作系统上的任何等效命令)来转换id_numbers.txt文件。
-e
echo选项用于在不插入新行的情况下输出所需内容,在此不需要。
另外我怀疑你的文件包含的ID是畸形的,你在哪个操作系统上创建了它?
无论如何,你可以这样简化你的脚本:
!/bin/bash
while read line
do
wget "http://www.rcsb.org/pdb/files/$line.pdb"
done < id_numbers.txt
我能够用id_numbers.txt
生成的id_numbers.txt
文件成功测试它:
for i in $(0 9) ; do echo "$i" >> id_numbers.txt ; done
尝试这个:
url="http://www.rcsb.org/pdb/files/"$line
$url=$url".pdb"
有关更多信息,请查看如何连接Bash中的字符串变量?
链接地址: http://www.djcxy.com/p/29125.html上一篇: Read content from text file formed in Windows in Linux bash