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
即可
转载于:https://blog.51cto.com/linuxme/348286