亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 課堂 > 基礎知識 > 正文

shell的參數和腳本流程改進

2024-09-12 20:30:07
字體:
來源:轉載
供稿:網友
  今天痛下決心,把事務的工作一定要使用平臺來做,時間短,任務緊,之前的運維開發是鋪了一個面,每個面都做一些相關的事情,所以工作整體看都有進展,但是最后沒有一個專注的功能。
 
  所以我就在想到底是怎么回事,我能不能專注一些,哪怕就實現一個簡單的功能,把它做好做透,其他的功能是不是能夠同樣復制很多的思想。于是乎,上班后我開始整理自己的思路,一邊問自己,一邊回答,每個回答都對應兩列,一個是需要做的改進(action),還有一個是這個action的預估時間。結果幾分鐘下來,我發現如果理想的情況下,我只需要2個小時就能搞定,這么一想,還是能接受的,于是對需要做的事情排了一個順序,立馬開干。
 
  我的設計是使用運維平臺連接中控服務器來級聯觸發遠程操作,這樣運維平臺對所有環境的耦合性是最低的。
 
  哪怕是最簡陋的操作,也要咬著牙完成,于是大體是這樣的流程,上午的時候有兩個部署需求,下午有兩個,第一個是在半調試狀態下完成的,第二個開始做腳本的模塊化整理,是一個半自動的過程,然后發現了一些問題,非常糾結的去修復歷史部署問題,等到第三個需求的時候,明顯好了許多,到了第四個,就可以一口氣完成了,流程打通了,細節就可以打磨了。
 
  于是我對有的腳本的邏輯進行改造,有一個很通用的需求,假設腳本是initdb.sh要調用這個腳本需要輸入一系列的參數,比如有5個參數。
 
  這個腳本里面有10個步驟,每個步驟都是使用function來實現的。如果要處理這5個參數,同時能夠控制10個步驟的執行,比如第2步不執行,第3步執行。腳本中其實還是比較難以管理和實現的。
 
  我設想了幾種實現思路:
 
  1)把10個步驟拆分成10個腳本,然后每個腳本都有自己的調用方式,獨立控制
 
  2)寫一個配置腳本,比如main.sh然后在這個腳本里控制initdb.sh的執行情況
 
  第二種看起來好一些,但是問題還是沒有解決,因為參數怎么管理,10個步驟怎么處理還是得細化。
 
  我的初步設想是5個參數,外帶一個參數即可,前面五個參數和一個步驟的參數。
 
  預期執行情況大體如下:
 
  # sh a.sh x x x x x 'init1 init3 init2'
 
  init1
 
  init3
 
  init2
 
  即執行的時候是按照init1 init3 init2的方式執行的。
 
  關鍵代碼如下:
 
  function init1(){
 
  echo 'init1'
 
  }
 
  function init2(){
 
  echo 'init2'
 
  }
 
  function init3(){
 
  echo 'init3'
 
  }
 
  function initdb(){
 
  arr=$1
 
  for fun in ${arr[*]}; do
 
  echo $i
 
  case $fun in
 
  init1)
 
  echo "test init1"
 
  init1
 
  ;;
 
  init2)
 
  echo "test init2"
 
  init2
 
  ;;
 
  init3)
 
  echo "test init3"
 
  init3
 
  ;;
 
  *)
 
  echo "out of scope"
 
  esac
 
  done
 
  }
 
  init_par=$1
 
  actions=($init_par)
 
  initdb "${actions[*]}"
 
  執行結果如下:
 
  [root@dev01 test]# sh a.sh 'init1 init3 init2'
 
  test init1
 
  init1
 
  test init3
 
  init3
 
  test init2
 
  init2
 
  這里有個問題,那就是我們輸入的操作步驟可能是無序的,但是執行的時候是希望按照順序,比如步驟2是依賴于步驟1的,這個我們是明確的。如果要實現這樣一個需求,就需要額外的一些補充,那就是排序功能,或者是前端傳入的時候來控制更好。
 
  沒事,能者多勞,我們就先實現了。保證能正確的運行起來,于是代碼又開始一通改動。
 
  function init1(){
 
  echo 'init1'
 
  }
 
  function init2(){
 
  echo 'init2'
 
  }
 
  function init3(){
 
  echo 'init3'
 
  }
 
  function initdb(){
 
  arr=$1
 
  complete_arr=(init3 init1 init2)
 
  order_arr=()
 
  for act_tmp in ${complete_arr[*]}; do
 
  if [[ " ${arr[@]} " =~ " $act_tmp " ]];then
 
  echo $act_tmp
 
  order_arr[${#order_arr[@]}]=$act_tmp
 
  echo order_arr[${#order_arr[@]}]
 
  fi
 
  done
 
  for fun in ${order_arr[*]}; do
 
  echo $i
 
  case $fun in
 
  init1)
 
  echo "test init1"
 
  init1
 
  ;;
 
  init2)
 
  echo "test init2"
 
  init2
 
  ;;
 
  init3)
 
  echo "test init3"
 
  init3
 
  ;;
 
  *)
 
  echo "out of scope"
 
  esac
 
  done
 
  }
 
  init_par=$1
 
  actions=($init_par)
 
  initdb "${actions[*]}"
 
  假設正確的步驟我們改為了init3 init1 init2,傳入參數為init1 init3 init2,如果能夠轉換,幸福感就大大提高了。
 
  腳本的執行結果如下:
 
  [root@dev01 test]# sh aa.sh 'init1 init3 init2'
 
  init3
 
  order_arr[1]
 
  init1
 
  order_arr[2]
 
  init2
 
  order_arr[3]
 
  test init3
 
  init3
 
  test init1
 
  init1
 
  test init2
 
  init2
 
  可見是達到了預期的目標了,所以這個思路可以借鑒,在其他的地方也可以參考使用。

(編輯:武林網)

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
久久久久北条麻妃免费看| 夜夜嗨av一区二区三区四区| 国产深夜精品福利| 欧美激情国产日韩精品一区18| 亚洲网站视频福利| 精品视频在线播放免| 久久av资源网站| 午夜精品久久17c| 欧美激情在线有限公司| 亚洲日本欧美中文幕| 欧美视频在线视频| 亲爱的老师9免费观看全集电视剧| 91久久精品国产91性色| 九九精品在线观看| 欧美国产高跟鞋裸体秀xxxhd| 欧美精品日韩www.p站| 久久中文久久字幕| 少妇高潮久久久久久潘金莲| 亚洲综合日韩在线| 成人福利网站在线观看| 亚洲激情在线视频| 亚洲美女在线视频| 欧美福利视频在线观看| 欧美一级黄色网| 欧美激情手机在线视频| 国产精品露脸自拍| 日韩av在线网站| 在线电影av不卡网址| 黑人与娇小精品av专区| 91精品国产91久久久久久不卡| 日韩中文字幕国产| 日韩在线视频观看| 亚洲欧美日韩天堂一区二区| 国自产精品手机在线观看视频| 欧美成人午夜剧场免费观看| 国产一区二区三区视频在线观看| 国产精品18久久久久久麻辣| 欧美亚洲在线播放| 欧美猛交免费看| 国产一区二区三区三区在线观看| 亚洲中国色老太| 欧美老女人www| 国产精品欧美激情在线播放| 精品国产1区2区| 国产精品成人免费电影| 亚洲欧洲黄色网| 欧美激情2020午夜免费观看| 日本一欧美一欧美一亚洲视频| 日本欧美一级片| 91香蕉国产在线观看| 国产精品日韩久久久久| 91成人在线播放| 欧美剧在线观看| 6080yy精品一区二区三区| 2025国产精品视频| 国产日韩在线精品av| 中文字幕日韩欧美在线| 欧美www在线| 亚洲第一在线视频| 国产精品久久久久av免费| 亚洲第一天堂无码专区| 欧美精品亚州精品| 国产精品视频最多的网站| 欧美成人午夜剧场免费观看| 欧美黑人性猛交| 黑人巨大精品欧美一区二区三区| 欧美黑人狂野猛交老妇| 精品久久久久久久久久久久久久| 欧美成人在线免费视频| 中文字幕亚洲综合久久筱田步美| 日韩大片在线观看视频| 久久综合久久88| 伊人男人综合视频网| 国产成人拍精品视频午夜网站| 在线视频免费一区二区| 久久的精品视频| 疯狂做受xxxx高潮欧美日本| 久久亚洲精品毛片| 中文字幕在线看视频国产欧美在线看完整| 国产精品一区专区欧美日韩| 亚洲免费av网址| 久久久久久91香蕉国产| 国产精品视频1区| 欧美电影《睫毛膏》| 日韩av在线免费播放| 国产精品成人免费电影| 日韩av在线不卡| 色综合色综合久久综合频道88| 欧美日韩在线观看视频小说| 中文字幕日韩av| 久久久国产一区二区| 欧美一级大片在线免费观看| 国产精品激情自拍| 岛国av一区二区在线在线观看| 欧美成在线观看| 69精品小视频| 欧美专区在线播放| 日韩精品高清在线观看| 在线看国产精品| 欧美疯狂做受xxxx高潮| 91欧美精品成人综合在线观看| 97视频免费在线看| 亚洲人成电影网站色www| 136fldh精品导航福利| 欧美性做爰毛片| 91日韩在线播放| 亚洲japanese制服美女| 国产精品亚洲片夜色在线| 欧美日韩亚洲精品一区二区三区| 日韩欧美高清在线视频| 国产成人aa精品一区在线播放| 国产视频久久久久| 欧洲中文字幕国产精品| 中文欧美日本在线资源| 亚洲国产精品久久久久秋霞不卡| 久久中文精品视频| 欧美日韩视频免费播放| 久热在线中文字幕色999舞| 日韩精品极品视频| 国产视频一区在线| 亚洲无av在线中文字幕| 最新国产精品拍自在线播放| 日韩国产欧美精品一区二区三区| 97在线看免费观看视频在线观看| 亚洲激情小视频| 国产精品你懂得| 亚洲一区二区三区视频播放| 欧美激情在线观看视频| xvideos亚洲人网站| 97免费视频在线播放| www.日韩不卡电影av| 国产精品视频中文字幕91| 91中文精品字幕在线视频| 91精品视频在线免费观看| 国产在线日韩在线| 91精品视频在线播放| 精品久久久91| 欧美在线视频免费| 日韩精品免费在线视频| 亚洲人成电影网站| 色青青草原桃花久久综合| 亚洲字幕在线观看| 欧美成人剧情片在线观看| 久久免费视频网| 中文字幕免费精品一区| 粉嫩老牛aⅴ一区二区三区| 一区二区三区回区在观看免费视频| 欧美另类第一页| 一本色道久久综合狠狠躁篇的优点| 一区二区三区四区精品| 欧美在线观看日本一区| 欧美黑人性视频| 亚洲嫩模很污视频| 日韩精品中文字| 91香蕉嫩草影院入口| 欧美一区二区.| 亚洲欧洲偷拍精品| 97视频在线看| 中文字幕亚洲无线码在线一区| 国产精品jizz在线观看麻豆| 国产成人精品免费久久久久| 亚洲福利在线播放| 久久久精品在线观看| 欧美一级视频免费在线观看|