<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      bingo0510

      shell編程規范

      1 腳本名以.sh結尾,名稱盡量見名之意,比如ClearLog.sh Clear_Log.sh clearlog.sh SerRestart.sh Ser_Restart.sh;
      2 盡量使用UTF-8編碼,注釋及輸出盡量使用英文;
      3 一般給到執行權限,但一些關于變量的配置文件不用加執行權限;
      4 執行的時候可以使用bash 執行,或者使用bash -x執行,可以直觀的顯示具體的執行過程;
      5 腳本首行使用/bin/bash,沒有空格,不帶任何選項;
      6 第二行為空格,或者是添加一行空注釋
      7 接著開始注釋內容:文件名、功能描述、作者、最后修改日期、版本號以及一些說明,還加上郵箱/手機號做為聯系,如果可以,需要加上版權聲明; 
      8 注釋內容之后空一行開始定義shell腳本中的變量;
      9 腳本內的變量定義,盡量使用大寫,或者大小寫駝峰寫法,或者使用下劃線連接的方式。變量名要見名之意,避免a,b,c類似的定義,變量的定義前后不要用空格。
                如果是整形,需要使用declare -i來聲明。
                如果是數組,則需要使用declare -a來聲明。
                如果是只讀變量,則需要使用declare -r來聲明。
                變量值盡量使用雙引號引起來,如果要使用強引用,如變量值中包含$符號,則使用”單引號引起來。
                如果要將命令的執行結果賦值給變量,則使用反引號,或者使用$().
      10 變量的引用使用以下方式:
               ${GameZone}
               $GameZone
               推薦使用第一種,如:tar zcf ${GameZone}.tar.gz /apps/data/
      11 單引號和雙引號混合使用的場景:
               echo ‘Welcome to “my school”‘
      12 在某些特殊的環境下,shell腳本里引用的命令,有可能是自己定義的bin路徑,在執行的時候會報出command not found,

              解決的方式是在執行的時候命令跟全路徑,或者在腳本的開始,顯式的設置一下PATH 變量,

              如: export PATH=”/usr/local/bin:/usr/bin:/bin:/usr/local/sbin:/usr/sbin:/sbin:/apps/bin/”

      13 建議在腳本執行的開始重讀下/etc/profile 或者是自己定義的關于環境變量的配置文件,推薦使用source,

              如: source /etc/profile
                     source /opt/sh/appenv.sh
      14 使用here document;
              如果腳本在執行的時候需要大段輸出提示信息,可是使用以下方式:
              cat << EOF
             This scripts used for XXX
             Usage:$0 [option]
             Pls be careful.
             Enjoy Yourself.
             EOF
             如果只是單行提示信息,可是使用echo的方式,可以添加顏色:
             echo “Welcome to use my script”
      15 如果需要在腳本里生成配置文件的模板,也可以使用here document的方式,示例如下:
             cat>>/etc/rsyncd.conf<<EOF
             log file = /usr/local/logs/rsyncd.log
             transfer logging = yes
             log format = %t %a %m %f %b
             syslog facility = local3
             timeout = 300
             [data1]
             path=/home/username
             list=yes
             ignore errors
             auth users = data1user
             secrets file=/etc/rsyncd/rsyncd.secrets
             comment = some description about this moudle
             exclude = test1/ test2/
             EOF
      16 如果需要創建臨時文件,可以使用如下方式:
             mktemp -d /tmp/file$$
      17 條件測試的時候,盡量使用[[]],而不用[]或者test,因為[[]]功能會更強大                                              
             [[ -d /tmp/logs ]]
            不在使用[ “x$NAME” == “x” ]這種方式;
      18 算數運算使用(())或者是中括號,但是記得括號里面的變量不要再加$
             ((12+i))
             而非((12+$i))
      19 使用高級變量的用法,比如使用
             ${GameZone:?”Error Message”}確保關鍵變量已經定義
             ${GameZone:=”S1″} 或者設置默認值
             否則:
             rm -rf ${GameZone}/* 后果不堪設想
      20 可以使用&& ||來替代簡單的if-then-else-fi語句。
      21 盡量給每條語句或者代碼段的執行給一個執行結果狀態,如果某條命令執行失敗,則exit N.
             盡可能使用$?來檢查前面一條命令的執行狀態。
      22 流程控制語句盡量使用一下方式:
             for I in {1..10};do
              ..。
             done
             while true;do
              …
             done
             if [];then
              …
             fi
      23 如果命令過長,可以分成多行來寫,比如:
             ./configure \
             –prefix=/usr \
             –sbin-path=/usr/sbin/nginx \
             –conf-path=/etc/nginx/nginx.conf \
             –error-log-path=/var/log/nginx/error.log \
             –http-log-path=/var/log/nginx/access.log \
             –pid-path=/var/run/nginx/nginx.pid  \
             –lock-path=/var/lock/nginx.lock \
      24 shell腳本并不要求強制縮進,但是要養成縮進的好習慣,可以使用兩個空格,建議使用tab鍵。如:
             if [];then
               …
             fi
      25 盡可能多的注釋信息。
      26 想要獲取當前腳本所在目錄,可以使用
            ScriptDir=$(cd $(dirname $0) && pwd)
      27 盡可能的使用函數的功能,將不同的功能定義為函數,直接引用函數;
      28 如果自定義環境變量,可以專門寫到一個文件中,避免在/etc/profile中添加;
      29 禁止使用SUID和SGID以及ACL用戶訪問控制列表的功能,如果需要較高權限,可以使用sudo;
      30 關鍵的操作須有日志輸出,專門記錄操作的成功或者失敗以及執行的時間點。
      31 腳本內可能包含敏感信息,如服務器密碼或者是數據庫密碼,如果公開之前先確認敏感信息是否已經刪除。

      版權聲明:原創地址: https://blog.csdn.net/weixin_38154393/article/details/70738671

      posted on 2018-04-04 10:06  bingo0510  閱讀(217)  評論(0)    收藏  舉報

      主站蜘蛛池模板: 中文字幕自拍偷拍福利视频| 女主播扒开屁股给粉丝看尿口| 婷婷国产成人精品视频| 久久这里只精品热免费99| 日本一道高清一区二区三区| 色综合久久一区二区三区| 玩弄丰满少妇人妻视频| 亚洲精品视频一二三四区| 国产一区二区三区导航| 免费网站看V片在线毛| 国产精品疯狂输出jk草莓视频| 亚洲qingse中文字幕久久| 精品人妻一区二区三区蜜臀| 成人h动漫精品一区二区无码| 国产香蕉久久精品综合网| 亚洲欧洲精品日韩av| 我国产码在线观看av哈哈哈网站| 夜夜添狠狠添高潮出水| 中文字幕亚洲一区二区三区| 午夜成年男人免费网站| 女人与牲口性恔配视频免费| 亚洲综合一区二区三区| 丁香花在线观看免费观看图片| 久久精品99国产精品日本| 亚洲一区二区精品动漫| 国产国产午夜福利视频| 老色鬼永久精品网站| 天天看片视频免费观看| 亚洲欧美综合一区二区三区| 东乡族自治县| 亚洲一区成人av在线| 日韩一区二区三区日韩精品| 人妻无码不卡中文字幕系列| 亚洲精品国产摄像头| 亚洲精品久久久久国色天香| 我要看亚洲黄色太黄一级黄 | 少妇被粗大的猛进69视频| 我要看亚洲黄色太黄一级黄| 深夜视频国产在线观看| 久久天天躁夜夜躁狠狠85| 成人欧美一区在线视频|