shell脚本不会逐行读取我的输入

时间:2011-10-07 13:36:16

标签: loops sh

我有像

这样的bourne shell脚本
#!/bin/sh

 for i in $(cat /etc/hosts)

   do

    echo $i

  done

当我运行这个脚本时/ etc / hosts文件中的每个单词都打印成不同的行,我的意思是如果文件的行是

127.0.0.1 localhost

10.0.0.1  fenasi

输出喜欢

 127.0.0.1

 localhost

 10.0.0.1

 fenasi

有没有办法逐行读取文件并像原版一样打印出来。我还需要这个解决方案来处理命令行输入

谢谢和问候

1 个答案:

答案 0 :(得分:0)

问题可能是IFS(输入字段分隔符)变量包含空格作为分隔符(或未设置,这相当于相同的东西。)

以下内容更接近您的要求:

#!/bin/sh
IFS="
"
for i in $(cat /etc/hosts)
  do
    echo $i
  done

这里,我们只使用换行作为字段分隔符,因此每行都将被视为一个字段。