【发布时间】:2020-04-07 23:50:21
【问题描述】:
我这样写一个scipt:
#!/bin/bash
while read line
do
echo line ${line}
pdbfile=${line}.pdb
echo pdbfile ${pdbfile}
done < myfile
结果是:
line pdb8mhtA
.pdbfile pdb8mhtA
应该是这样的
line pdb8mhtA
pdbfile pdb8mhtA.pdb
这有什么问题?为什么字符串连接不起作用?为什么行首出现奇怪的点?
我替换为pdbfile=${line}'.pdb'。这不会改变结果。
【问题讨论】:
-
输入中会不会有回车(
\r)字符? -
您可以尝试以下操作:
od -xc myfile并将结果粘贴到此处吗?怀疑是文件中有一个奇怪的字符正在搞砸。 -
我用简单的复制/粘贴测试了你的脚本,它工作正常。我尝试在输入文件的第一行之后添加一个
\r字符(如@Biffen 所建议的那样),我得到了您向我们展示的输出。为了从您的输入数据中去除 Windows 风格的回车,我建议运行以下脚本:sed -i 's/^M//g' myfile
标签: bash shell string-concatenation