[Intern][2019.03.20]Linux Shell 執行傳參數和expr

来源:https://www.cnblogs.com/jackablack/archive/2019/03/20/10566169.html
-Advertisement-
Play Games

前不久入職實習生,現在在幫著組裡面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

就是這樣子,在想到什麼就再往上面丟點什麼吧!


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 隨著時間的推移,Winform也算是能夠堅持下來最久的技術之一了,它的昔日輝煌和現今的依舊活躍,導致了它依舊擁有者很龐大的用戶群體,雖然目前很多技術日新月異的,曾經的ASP、ASP.NET WebForm、Asp.NET MVC、WPF等技術基本上淡出了視野,而迎來了.NET Core、UWP等技術... ...
  • 使用步驟: 1.vscode 安裝restclient 擴展 2.創建 .http 或 .rest 文件 ,編寫相應內容 同一個文件內 可以通過 ### 分割多個請求 可以通過 @hostname = api.example.com 來定義變數, 以及 在GET時 {{hostname}}來進行使用 ...
  • Kubernetes可視WEBUI Dashboard搭建 支持瀏覽器:火狐 一.Dashboard下載地址 git clone https://github.com/kubernetes/kubernetes/ 二.部署Dashboard需要文件 [root@k8s_master ui]# ll ...
  • Linux 用腳本編寫搭建yum本地倉庫 源碼如下: 執行腳本 sh yum.sh 或者先賦予腳本執行許可權 chmod +x yum.sh,然後再運行腳本./yum.sh 測試: 1.用yum list查看 2.安裝一個服務測試,這裡以DNS服務為例 最後出現軟體出現Complete!說明httpd ...
  • 最近開始做研究生畢設,有一部分因為沒有什麼好的思路,就把以前用過的PCL點雲搬出來,重新用源碼裝了一遍PCL,一開始裝的過程中沒什麼大問題,在後面用的時候碰到了很多小問題,特此記錄。 1.PCL版本問題 如果你用ROS的話,安裝的時候會自帶PCL的1.7版本,不過本著用源碼安裝的習慣,我們還是從gi ...
  • 最近為了學 DevOps,自己動手在 virtualbox 上安裝 ubuntu 系統,安裝完後發現好坑,沒辦法用 XShell 連接。線上安裝 openssh-server 又發現沒有配置軟體源,手工把源地址敲上去,這個想法有點瘋狂,最後決定利用 virtualbox 的共用文件夾功能來實現拷貝, ...
  • kubernetes二進位部署 1、環境規劃 軟體 版本 Linux操作系統 CentOS Linux release 7.6.1810 (Core) Kubernetes 1.9 Docker 18.09.3 etcd 3.3.10 角色 IP 組件 推薦配置 k8s_master etcd01 ...
  • 作為一個以伺服器為主要市場的操作系統,主要就是對客戶端的請求進行響應,進行處理的。在經歷過系統鏡像安裝和本地配置好ssh功能後,接下來進行伺服器的安裝,這裡我以nginx為主,介紹一下如何安裝nginx和配置站點, 安裝要求 + linux centos7系統 + ssh軟體 nginx簡介 "ng ...
一周排行
    -Advertisement-
    Play Games
  • 示例項目結構 在 Visual Studio 中創建一個 WinForms 應用程式後,項目結構如下所示: MyWinFormsApp/ │ ├───Properties/ │ └───Settings.settings │ ├───bin/ │ ├───Debug/ │ └───Release/ ...
  • [STAThread] 特性用於需要與 COM 組件交互的應用程式,尤其是依賴單線程模型(如 Windows Forms 應用程式)的組件。在 STA 模式下,線程擁有自己的消息迴圈,這對於處理用戶界面和某些 COM 組件是必要的。 [STAThread] static void Main(stri ...
  • 在WinForm中使用全局異常捕獲處理 在WinForm應用程式中,全局異常捕獲是確保程式穩定性的關鍵。通過在Program類的Main方法中設置全局異常處理,可以有效地捕獲並處理未預見的異常,從而避免程式崩潰。 註冊全局異常事件 [STAThread] static void Main() { / ...
  • 前言 給大家推薦一款開源的 Winform 控制項庫,可以幫助我們開發更加美觀、漂亮的 WinForm 界面。 項目介紹 SunnyUI.NET 是一個基於 .NET Framework 4.0+、.NET 6、.NET 7 和 .NET 8 的 WinForm 開源控制項庫,同時也提供了工具類庫、擴展 ...
  • 說明 該文章是屬於OverallAuth2.0系列文章,每周更新一篇該系列文章(從0到1完成系統開發)。 該系統文章,我會儘量說的非常詳細,做到不管新手、老手都能看懂。 說明:OverallAuth2.0 是一個簡單、易懂、功能強大的許可權+可視化流程管理系統。 有興趣的朋友,請關註我吧(*^▽^*) ...
  • 一、下載安裝 1.下載git 必須先下載並安裝git,再TortoiseGit下載安裝 git安裝參考教程:https://blog.csdn.net/mukes/article/details/115693833 2.TortoiseGit下載與安裝 TortoiseGit,Git客戶端,32/6 ...
  • 前言 在項目開發過程中,理解數據結構和演算法如同掌握蓋房子的秘訣。演算法不僅能幫助我們編寫高效、優質的代碼,還能解決項目中遇到的各種難題。 給大家推薦一個支持C#的開源免費、新手友好的數據結構與演算法入門教程:Hello演算法。 項目介紹 《Hello Algo》是一本開源免費、新手友好的數據結構與演算法入門 ...
  • 1.生成單個Proto.bat內容 @rem Copyright 2016, Google Inc. @rem All rights reserved. @rem @rem Redistribution and use in source and binary forms, with or with ...
  • 一:背景 1. 講故事 前段時間有位朋友找到我,說他的窗體程式在客戶這邊出現了卡死,讓我幫忙看下怎麼回事?dump也生成了,既然有dump了那就上 windbg 分析吧。 二:WinDbg 分析 1. 為什麼會卡死 窗體程式的卡死,入口門檻很低,後續往下分析就不一定了,不管怎麼說先用 !clrsta ...
  • 前言 人工智慧時代,人臉識別技術已成為安全驗證、身份識別和用戶交互的關鍵工具。 給大家推薦一款.NET 開源提供了強大的人臉識別 API,工具不僅易於集成,還具備高效處理能力。 本文將介紹一款如何利用這些API,為我們的項目添加智能識別的亮點。 項目介紹 GitHub 上擁有 1.2k 星標的 C# ...