2014马哥Linux0217中对0214三题的解答

前几天在做2014马哥Linux0214的作业的时候,发现其实这三题在0217中有解答,当然觉得马哥比自己写得好太多,所以忍不住要把马哥的答案贴出来,以供自己学习。


第一题:写一个脚本,用for循环实现显示/etc/init.d/functions、/etc/rc.d/rc.sysinit、/etc/fstab有多少行


#!/bin/bash

for fileName in /etc/init.d/functions /etc/rc.d/rc.sysinit /etc/fstab;do

  lineCount=`wc -l $fileName | cut -d' ' -f1`

  echo "$fileName:$lineCount lines."

done


或者更为简洁:

#!/bin/bash

for fileName in /etc/init.d/functions /etc/rc.d/rc.sysinit /etc/fstab;do

  echo "$fileName:`wc -l $fileName | cut -d' ' -f1` lines."

done

这么写无疑是最简洁的。


第二题:写一个脚本,将上一题中三个文件复制到/tmp目录中,用for循环实现,分别将每个文件的最近一次修改时间改为2011年9月15日13点27分。

#!/bin/bash

for fileName in /etc/init.d/functions /etc/rc.d/rc.sysinit /etc/fstab;do

  cp $fileName /tmp

  baseName=`basename $fileName`

  touch -mt 201109151327 /tmp/$baseName

done


第三题:写一个脚本,显示/etc/passwd中第3、7和11个用户的用户名和ID号。

#!/bin/bash

for lineNo in 3 7 11;do

  userInfo=`head -n $lineNo /etc/passwd | tail -1 | cut -d: -f1,3`

  echo -e "User:`echo $userInfo | cut -d: -f1`\nUid:`echo $userInfo | cut -d: -f2`"

done

我自己写成如下,做了点小改动,我觉得适合我的风格,但主体框架不变。

#!/bin/bash

way=/etc/passwd

for lineNo in 3 7 11;do

  echo "User name:`head -$lineNo $way | tail -1 | cut -d: -f1` UserID:`head -$lineNo $way | tail -1 | cut -d: -f3`"

done

个人感觉,马哥的第三题有些繁琐啊。

刚开始的几个toy programme,对思路启发的价值比较大。

你可能感兴趣的:(linux,循环,for)