在bash中输出for循环

时间:2014-10-18 20:35:56

标签: bash shell

我在while循环中运行for循环。

作为参数传递的文件具有以下内容:

peter
roger
casie

我正在尝试创建一个路径来测试文件a,b,c,d,e

的存在

我期待输出

/peter/a
/peter/b

等等。

相反,我正在

/aeter
/beter

我需要在这里理解什么?请找到以下代码 -

CODE:

while read fileLine; do
  x=$fileLine
  for i in a b c d e
  do
    echo /$x/$i
  done
done < $1

1 个答案:

答案 0 :(得分:1)

显然,您的输入文件使用\r\n的Windows行尾格式。 read移除了\n,但离开了\r。打印字符串/$x/$i时,“托架”将返回到x字符串末尾的行的开头,并在x的斜杠顶部打印斜杠。将i上的字母打印在x的第一个字母上。

您可以通过将x=$fileLine行替换为

来解决此问题
x=${fileLine%?}

应删除最后一个字符。