在shell脚本的循环中连接字符串

时间:2016-10-07 10:02:18

标签: string shell loops

我想在shell脚本的循环中将后缀连接到一个字符串,但结果让我感到困惑。 shell脚本如下:

LT51240392010131BKT01
_NDVI40392010131BKT01
LT51240392010163BKT01
_NDVI40392010163BKT01
...

结果是:

LT51240392010131BKT01
LT51240392010131BKT01_NDVI
LT51240392010163BKT01
LT51240392010163BKT01_NDVI
...

前五个字符被" _NDVI"取代。 但预期的结果应该是:

{{1}}

我认为字符串连接的方法是正确的,如果不在循环中。我不知道为什么会产生这个结果?

1 个答案:

答案 0 :(得分:0)

看起来您的文件可能包含Windows样式的行结尾(回车符+换行符),因此您应该将它们转换为UNIX样式。一种简单的方法是使用工具dos2unix

请勿使用for读取文本文件的行:

while read -r line
do
  echo "$line"
  echo "${line}_NDVI"
done < IMAGElist.txt

请注意,使用专为处理文本设置的工具(例如awk或sed),您可以更有效地实现此结果。