1 . 編寫一腳本輸入一個檔案,判斷其行數,要求用函數和 when 語句實作,且列印此檔案的内容,并在沒兩行之間加入一行特殊字元。 <?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /> [[email protected] 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