1编写一脚本输入一个文件,判断其行数,要求用函数和when语句实现,且打印此文件的内容,并在没两行之间加入一行特殊字符。<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />

[root@station16 tmp]# vi filet.sh

#! /bin/bash

# filet.sh :

#Author:our RHCE Team

#Create file time is 2010:07:10:02:36:38

#Version: <?xml:namespace prefix = st1 ns = "urn:schemas-microsoft-com:office:smarttags" />0.0.01

 

 

let COUNTS=0

 

read -p "Please input a file :" FILE

 

 

func_my () {

 

FILE1=`mktemp /tmp/tmp.XXXXXX`

 

 

 MAX=`cat $1 | wc -l`

 

 

 

 

 if [ -e $1 -a -f $1 ];then

 

  while read LINE

   do COUNTS=$[$COUNTS+1]

    if [ $COUNTS -lt $MAX ] ;then

        echo "$COUNTS $LINE"

        echo "-------------------------------------"

    else

      echo "$COUNTS $LINE"

      fi

done < $1 > $FILE1

echo  "$1 file all lines is $MAX"

 

 fi

 

echo "$FILE1"

 

cat $FILE1

rm $FILE1

}

 

 

 

while [ $FILE != "q" ]

 do

  func_my $FILE

  read -p "Please input a file :" FILE

 done

2 写一个脚本,一下要求使用函数实现

a .将本机的命令历史保存至一个临时文件中,而后删除这个文件中所有一行中包含了 history ls (即后面没有参数的命令)

b .而后再去除命令中重复的多余行,并未处理后的每一行添加行号;

c .显示此文件;

d .在脚本结束前删除此临时文件;

解:

编写执行文件 tmp.sh

#! /bin/bash

# tmp.sh :

#author:our RHCE Team

#Create file time is 2010:07:10:07:22:18

#Version: 0.0.01

 

func_my () {

 

  M=`mktemp /tmp/tmp.XXXXXX`

  history -a ~/.bash_history

  cp ~/.bash_history $M

  cat $M | sed -e '/.*ls$/d' -e '/.*history$/d' | sort -u | cat -n

  rm -f $M

}

 

func_my

 

然后执行: bash tmp.sh 即可