使用while循环一次读取文件的一行,直到文件尾部格式如下:

while read line; do  \\ line 为一个变量,表示读取到一行的字符
    循环体
done < /path/to/somefile

使用read由标准输入读取数据,放入变量line中,如果读到的数据非空,就进入循环。


示例:

取得/etc/passwd的用户名及shell

#!/bin/bash
#
IFS=':'    ## 改变字段分隔符
while read f1 f2 f3 f4 f5 f6 f7     ## 将读取的各行帐号放入f1-9的变量中
do 
    echo "userName: $f1  ;userShell: $f7"   ## 输出变量
done < /etc/passwd

或可以通过管道传给{}的指令组如下所示

#!/bin/bash
#
IFS=':'    ## 改变字段分隔符
cat /etc/passwd | { 
while read f1 f2 f3 f4 f5 f6 f7     ## 将读取的各行帐号放入f1-9的变量中
do 
    echo "userName: $f1  ;userShell: $f7"   ## 输出变量
done 
}

练习: