天天看點

linux中函數及循環when的小小應用

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

繼續閱讀