天天看点

通过脚本案例学习shell(二) --- 通过线性显示/etc/passwd内容了解while read用法

<b>需求:要求在屏幕上显示</b><b>/etc/passwd</b><b>里面的内容</b><b>,</b><b>具体要求如下:</b><b></b>

<b></b>

1、/etc/passwd每一行字段分7部分,中间用:隔开,要求每一部分线性一个一个显示

2、每一行只显示字段1、3、4、6、7五个字段,显示结果如下:

username=root,uid=0,gid=0,homedir=/root,shell=/bin/bash,

脚本思路分析:线性显示需要用while read语句,每一行单独显示需要用for循环,部分字段显示,需要在for循环中嵌套if语句排除不需要显示的内容。

#!/bin/bash 

while read LINE  //定义变量LINE 

do 

  NUM=1 

        for name in  username uid gid homedir shell  //定义变量name 值为后面的username,uid,gid,homedir,shell 

                do 

                        echo -n "$name=" 

                        echo -n $(echo $LINE  | cut -d: -f$NUM) //以:分割显示 

                        echo -n "," 

                        NUM=$(( $NUM + 1 ))  //第一个字段显示完变量+1 

                                if [ $NUM -eq 2 ] ||[ $NUM -eq 5 ];then //排除第二个和第五个字段 

                                        NUM=$(( $NUM + 1 )) 

                                fi       

                        sleep 1 //每一行显示一个字段停顿1秒 

                done     

        echo //每一行显示完插上空的一行 

done &lt;/etc/passwd  //将/etc/passwd内容输入到while read循环中 

部分脚本分析:

cut -d: -f$num 取每一列以:分割的部分

echo –n 在同一行显示下一行内容,不进入下一行

num=$(($num+1)) 变量进行数值,每次加1

sleep 1  运行过程中停顿1秒

以下是脚本执行的结果,部分内容未显示出来。

<a href="http://blog.51cto.com/attachment/201303/102112324.png" target="_blank"></a>

本文转自凌激冰51CTO博客,原文链接:http://blog.51cto.com/dreamfire/1152193,如需转载请自行联系原作者