<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 </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,如需轉載請自行聯系原作者