沈陽電腦維修網,沈陽上門維修電腦服務
當前位置: 主頁 > 程序數據代碼>腳本編程風格_程序數據_shell >

腳本編程風格_程序數據_shell

時間:2011-12-5來源:沈陽電腦維修網 作者: 呂先生:13889116605點擊:
沈陽電腦維修,上門維修電腦
      寫腳本時養成結構化和系統方法的習慣.即使你在信封背后隨便做一下草稿也是有益的,要養成在寫代碼前花幾分鐘來規劃和組織你的想法.這兒是一些風格的指南.注意這節文檔不是想成為一個官方Shell編程風格.1.非官方的Shell腳本風格注釋你的代碼.這會使你的代碼更容易讓別人理解和賞識,同時也便于你維護.    1PASS="$PASS${MATRIX:$(($RANDOM%${#MATRIX})):1}"  2#當你去年寫下這句代碼時非常的了解它在干什么事,但現在它完全是一個謎.  3#(摘自AntekSawicki的"pw.sh"腳本.) 給腳本和函數加上描述性的頭部信息.     1#!/bin/bash  2  3#************************************************#  4#                  xyz.sh                      #  5#          writtenbyBozoBozeman             #  6#               July05,2001                  #  7#                                               #  8#                  清除項目文件.               #  9#************************************************# 10 11E_BADDIR=65                      #沒有那樣的目錄. 12projectdir=/home/bozo/projects   #要清除的目錄. 13 14#---------------------------------------------------------# 15#cleanup_pfiles()                                        # 16#刪除指定目錄里的所有文件.                                # 17#參數:$target_directory                                  # 18#返回:成功返回0,失敗返回$E_BADDIR值.                   # 19#---------------------------------------------------------# 20cleanup_pfiles() 21{ 22  if[!-d"$1"] #測試目標目錄是否存在. 23  then 24    echo"$1isnotadirectory." 25    return$E_BADDIR 26  fi 27 28  rm-f"$1"/* 29  return0  #成功. 30}  31 32cleanup_pfiles$projectdir 33 34exit0 確認#!/bin/bash在腳本的第一行,在任何頭部注釋行之前.避免使用"魔數," 它是硬編碼的字符常量.用有意義的變量名來代替.這使腳本更容易理解并允許在不破壞應用的情況下做改變和更新.     1if[-f/var/log/messages]  2then  3  ...  4fi  5#一年以后,你決定讓腳本改為檢查/var/log/syslog.  6#那么現在就需要你手動修改腳本里每一處的要改動的代碼,  7#希望不要有你疏漏的地方.  8  9#更好的辦法是: 10LOGFILE=/var/log/messages #只需要改動一行. 11if[-f"$LOGFILE"] 12then 13  ... 14fi 為變量和函數選擇描述性的名字.     1fl=`ls-al$dirname`                #含義含糊.  2file_listing=`ls-al$dirname`      #更好的名字.  3  4  5MAXVAL=10  #同一個腳本所有程序代碼使用腳本常量.  6while["$index"-le"$MAXVAL"]  7...  8  9 10E_NOTFOUND=75                       # 把錯誤代碼的代表的變量名大寫U, 11                                     #+并以"E_"開頭. 12if[!-e"$filename"] 13then 14  echo"File$filenamenotfound." 15  exit$E_NOTFOUND 16fi  17 18 19MAIL_DIRECTORY=/var/spool/mail/bozo #環境變量名用大寫. 20exportMAIL_DIRECTORY 21 22 23GetAnswer()                        #函數名用適當的大小寫混合組成. 24{ 25  prompt=$1 26  echo-n$prompt 27  readanswer 28  return$answer 29}  30 31GetAnswer"Whatisyourfavoritenumber?" 32favorite_number=$? 33echo$favorite_number 34 35 36_uservariable=23                    #語法允許,但不推薦. 37#用戶定義的變量最好不要用下劃線開頭. 38#把這個留給系統變量使用更好. 用有含義和系統的方法來使用退出代碼(exitcodes).     1E_WRONG_ARGS=65  2...  3...  4exit$E_WRONG_ARGS 最后建議在腳本中使用/usr/include/sysexits.h的退出碼,雖然它們主要由C和C++語言編程時使用.使用標準的參數選項.最后建議使用下面一組參數標志.  1-a     All:Returnallinformation(includinghiddenfileinfo).  2-b     Brief:Shortversion,usuallyforotherscripts.  3-c     Copy,concatenate,etc.  4-d     Daily:Useinformationfromthewholeday,andnotmerely  5        informationforaspecificinstance/user.  6-e     Extended/Elaborate:(oftendoesnotincludehiddenfileinfo).  7-h     Help:Verboseusagew/descs,auxinfo,discussion,help.  8        Seealso-V.  9-l     Logoutputofscript. 10-m     Manual:Launchman-pageforbasecommand. 11-n     Numbers:Numericaldataonly. 12-r     Recursive:Allfilesinadirectory(and/orallsub-dirs). 13-s     Setup&FileMaintenance:Configfilesforthisscript. 14-u     Usage:Listofinvocationflagsforthescript. 15-v     Verbose:Humanreadableoutput,moreorlessformatted. 16-V     Version/License/Copy(right|left)/Contribs(emailtoo). 把復雜的腳本分割成簡單一些的模塊.用合適的函數來實現各個功能.如果有簡單的結構可以使用,不要使用復雜的結構.     1COMMAND  2if[$?-eq0]  3...  4#多余的并且也不直接明了.  5  6ifCOMMAND  7...  8#更簡練(或者可能會損失一些可讀性).
上一篇:測試和比較: 另一種方法_程序數據_shell
下一篇:shell中的選項_程序數據_shell
查看[腳本編程風格_程序數據_shell ]所有評論
發表評論
請自覺遵守互聯網相關的政策法規,嚴禁發布色情、暴力、反動的言論。
用戶名: 驗證碼:
推薦內容
關于我們 服務價格 聯系我們 企業網站優化 沈陽網站建設 沈陽維修電腦
福建31选7开奖号码走势图