shell指令碼模式

來源:互聯網
上載者:User

標籤:個數   執行   注釋   count   重複   產生   編程   one   流程   

”所謂沒有規矩不成方圓 下面說一下shell指令碼的一些固定模式 “  一、指令碼的基本規則1、先說檔案名稱 簡明扼要 盡量見名之意 第一位元禁止用數字2、檔案名稱要以 “.sh ”結尾(注意有個點)3、指令碼第一行必須包括shell生命序列 “#!” 例“#!/bin/bash” 給予執行許可權 在命令列上指定指令碼的絕對路經或相對路經(第一行可寫可不寫 但是作為一個有素養的營運人 必須寫!!)4、接著開始寫注釋內容:檔案名稱、功能描述、作者及連絡方式、最後修改日期、版本號碼以及一些說明。  二、指令碼編程邏輯處理方式1、順序執行2、迴圈執行3、選擇執行  三、接下來就是堆命令的過程1、變數命名不能使用程式中的保留字:例 if 、for。只能使用字母數字及底線,同樣不能使用數字開頭2、位置變數 (這是一個很方便的技能)$0、        $1、$2、$3...                      $#檔案名稱     傳遞的第一、二、三..個參數         傳遞給指令碼的參數個數$*                                                                [email protected]傳遞給指令碼的所有參數,全部參數合為一個字串    傳遞給指令碼的所有參數,每個參數為獨立字串    註:“$*” 和 “[email protected] ”不容易分清區別 只有被雙引號包起來的時候才會看出來差異set 清空所有位置變數 3、算數運算幾個運算子號 : +、-、*、/、%模數(取餘)、**乘方(運算子號有些情境需要轉義)兩個算術例子 固定格式*例: let r=9+9查看運算結果 echo $r *例:r=$((9+9))查看運算結果 echo $r $RANDOM 隨機產生一串數字(0-32767)之內的*例 echo $[$RANDOM%50]取0-49之間的任意一位元 4、增強型賦值增強型運算子號 +=、-=、*=、/=、%=*例 let count+=3自加3後賦值 *例 let var++預設自加1 5、bash的測試類型                      字串測試-gt:是否大於                                   == ; 是否等於-ge:是否大於等於                             >   : ascii碼是否大於asscii-eq:是否等於                                  <    :是否小於-ne:是否不等於                               != :是否不等於-lt:是否小於                                    =~:左側字串是否能夠被右側的PATTERN所匹配-le:是否小於等於 -z :測試字串是否為空白,不空為假,空則為真-n:測試字串是否不空,不空為真,空則為假 6、使用read命令來接受輸入-p: 輸出顯示到螢幕-s:靜默輸出(一般密碼之類的會用到)例: reda -p "Enteer a filename:" FILE 注意FILE前面一定要加空格 7、字串切片先設定一個變數 myname="/usr/sbin/ntpdate" *字串長度測試echo ${#maname}1查看設定的字串長度 後面會顯示總共17個 “/”也算 *變數進階操作例:echo ${myname#/*/}sbin/ntpdate *一個“#”號由前面對比 刪除匹配到最短的例:echo ${myname##/*/}ntpdate *兩個“#”號由前面對比 刪除匹配到最長的例:echo ${myname%/*}/usr/sbin *一個“%”由後面對比 刪除匹配到的最短的例:echo ${myname%%/*}(空)兩個“%”由後面對比 刪除匹配到的最長的 8、流程式控制制(if、for、while)**if語句格式及舉例if (command1條件1);then如果條件1執行失敗執行條件2 例(1<1)是錯的(if-flase失敗)執行動作elif (command2條件2)條件2執行失敗 例(1>1)(if-flase)執行動作else(則直接執行條件3可以不用加執行條件 例(1=1)(if-true成功)執行動作fi(結束符) **for語句格式及樣本for i in {1..10};do給i設定變數等於1~10 (切記“i”不能加$符號)useradd user${i}建立十個使用者 user1、user2、user3.....done(結束符) **while語句格式及樣本while true;do如果條件為真 則繼續執行echo {1..100}顯示1~100 重複迴圈執行 除非手動停止done 結束符  四、總結小技巧*如果命令太長可以用“\”分行來寫*shell指令碼不要求縮排,但是要養成縮排的好習慣*可以把定義的環境變數專門寫到一個檔案裡,避免修改系統檔案*關鍵的操作須有日誌輸出,專門記錄操作的成功或者失敗以及執行的時間*指令碼內很可能包含敏感資訊,如果公開之前一定要確認是否已經刪除*盡量給每條語句或者代碼的執行給一個執行結果狀態*建議在指令碼執行的開始重讀下/etc/profile 推薦使用source 或者"."*指令碼內定義的變數或者檔案名稱盡量使用“駝峰寫法”見名之意避免使用a、b、c類似的定義*另外寫指令碼有三個技巧多寫多練 、多寫多練、多寫多練,就這些。              

shell指令碼模式

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.