天天看點

通過腳本案例學習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,如需轉載請自行聯系原作者