精華區beta NTUWindBand 關於我們 聯絡資訊
※ 引述《CMrockmanx (rockman)》之銘言: : : function f { : : if [ $# -gt 2 ]; then : : echo "You give me too many arguments!" : : return 1 : : elif [ $# -eq 0 ]; then : : echo "You give me no arguments!" : : return 1 : : elif [ $# -eq 1 ]; then : : search_dir=/ : : else : : if [ -d $2 ]; then : : search_dir=$2 : : else : : search_dir=/ : : fi : : fi : : find "$search_dir" -name "$1" 2>/dev/null : : return 0 : : } : 嗯,實在是太深了!看來我還要再好好加油了! : 當答案也看不懂時,表示知識的層次還不夠高!!唉!! 看不懂的時候就要先試著跑跑看嘛。 不過在這裡我們要加點背景知識: $# 指的就是我們給的 argument 的數量 例如: $ f mail /abcd -> $# = 2 $ f news -> $# = 1 $ f -> $# = 0 $ f a b c d e f g -> $# = 7 這樣沒問題吧。 還有每個 argument 都有一個編號,在第一個例子裡面: mail 可以用 $1 表示 /abcd 可以用 $2 表示 我們再回過頭來看我那個 function 是在做什麼。 因為我們所要寫的 "f" 可以接受一個或兩個 arguemnt , 所以我就把超過兩個,或是完全沒給 argument 的 ( $# > 2 or $# = 0 ) 那些狀況給找出來,印個錯誤訊息,然後就結束。 如果 $# = 1 的話,我就知道要從 "/" 開始找起, 如果 $# = 2 的話,我還要看給的目錄名字, $2 , 是不是真的存在,假如存在的話就拿來用,不存在 的話,就改用 "/" ,最後,再把一些目錄、檔名 這些交給 find 去執行,整個程式做的就是這樣。 另外那些 if, elif, else, fi 和什麼 -gt -eq 的 事,大概就沒什麼重要了。只是一些條件判斷,看 看是不是 greater than 或 equal 罷了。 -- ※ 發信站: 批踢踢實業坊(ptt.m8.ntu.edu.tw) ◆ From: cave5.ck.tp.edu