前不久入職實習生,現在在幫著組裡面dalao們跑Case,時不時要上去收一下有木有Dump,每次敲命令太煩人於是逼著自己學寫Shell腳本。一開始真的是很痛苦啊,也沒能搞到書,只能憑網上半真半假的消息照葫蘆畫瓢!廢話少說,上正文! 我是分割線 就是這樣子,在想到什麼就再往上面丟點什麼吧! ...
前不久入職實習生,現在在幫著組裡面dalao們跑Case,時不時要上去收一下有木有Dump,每次敲命令太煩人於是逼著自己學寫Shell腳本。一開始真的是很痛苦啊,也沒能搞到書,只能憑網上半真半假的消息照葫蘆畫瓢!廢話少說,上正文!
=========================我是分割線=========================
1 clear 2 3 echo "Check_dump is a tool help you check dumps" 4 5 numberOfSPs=2 6 commands="-lcd" 17 ########################################################### 18 # 19 # getopts 命令是 Korn/POSIX shell 的內置命令 20 # ,用來從參數列表檢索選項以及選項參數。選項由一個+(加號) 21 # 或者是由一個-(減號)後跟一個字元開始。一個既不是以+,也不 22 # 是以-開始的選項結束選項字元串。每次調用 getopts 命令時,它 23 # 將下一個選項的值放置在 Name 內,並將下一個要處理的參數的索引 24 # 置於 shell 變數 OPTIND 中。每當調用 shell 時,都會將 25 # OPTIND 初始化為 1。當選項以 + 開頭時,會將 + 預 26 # 追加到 Name 中的值。 27 # 28 ########################################################## 29 30 while getopts ":a:b:c:n:" opt # 如果選項字元串中的字元後面帶有“:”(冒號),那麼預期此選項將帶有參數。 31 # 在這裡a前面有沒有冒號會決定下麵的*/?能不能起效 32 # 詳細的說明可以參考 https://www.ibm.com/support/knowledgecenter/zh/ssw_aix_71/com.ibm.aix.cmds2/getopts.htm 33 do 34 case $opt in 35 a) 36 d1=$OPTARG # 當選項需要選項參數時,getopts 命令就將其置於變數 OPTARG 中 37 echo "d1 is $d1 " 38 ;; # 一定要記得加上末尾的;;,相當於其它語言的 break 39 b) 40 d2=$OPTARG # OPTARG 出現了,他就是取得參數的具體地方 41 echo "d2 is $d2, and destination is $d1.$d2" # Shell 裡面的變數很有意思,直接這樣寫就能順著輸出出來 42 ;; # 雙引號會解析字元串裡面的轉義字元和變數名,單引號不會 43 c) 44 commands=$OPTARG 45 echo " Addtional command: $commands " 46 ;; 47 n) 48 numberOfSPs=$OPTARG 49 echo "Number of SPs has changed to $numberOfSPs " 50 ;; 51 *) # * 或者 ? 匹配所有不是上面列出的東東 52 echo "Usage: check_dump -a<xxx.xxx.xxx> -b<xxx> -c<commands> -n<number of SP> 53 And the destination is IP for Unisphere." 54 exit 55 esac 56 done 57 58 i=1 59 while [ $i -le $numberOfSPs ] 60 do 61 d2=$((d2+1)) 62 destination="$d1.$d2" 63 echo "============================================= 64 checking SP$i, destination is :$destination" # 很有趣吧,直接在字元串裡面換行,列印輸出內容也會換行! 65 i=$((i+1)) # $(()) 和 下麵的 ``是一樣的,表示裡面的東東可以執行,需要執行以後再做其他操作 66 res="`ssh $destination svc_dc $commands`" 67 if [[ ${#res} == 234 ]];then # 比較應該深度學習的“expr指令”的縮寫版本,原版有些指令少而不太好使 68 # 看到if後面跟的什麼了沒!!!!";then""五個字元一個不能少! 69 echo "No dumps" 70 else # 分支比較多的話還可以選擇用elif[[ condition ]];then 71 echo "Found dumps: 72 $res" 73 fi 74 75 done 76 exit
就是這樣子,在想到什麼就再往上面丟點什麼吧!