for循环方式

for i in `cat /root/test`
do
    echo $i
done
  • for循环方式有一个问题,当文件中有空格时,会默认以空格分行。

解决方法

IFS_old=$IFS
IFS=$'\n'

for i in `cat /root/test`
do
    echo $i
done

IFS=$IFS_old

while循环方式

while read -r line
do
   echo $line
done < test
  • While循环中read命令从标准输入中读取一行,并将内容保存到变量line中。
  • -r 选项保证读入的内容是原始的内容,意味着反斜杠转义的行为不会发生。
  • 输入重定向操作符< test打开并读取文件test,然后作为read命令的标准输入。

重定向管道法

cat test | while read line
do
    echo $line
done