日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

03—Shell脚本编写规范

發(fā)布時(shí)間:2023/12/15 编程问答 19 豆豆
生活随笔 收集整理的這篇文章主要介紹了 03—Shell脚本编写规范 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

1shell腳本的第一行是指定賈肯解釋器,通常為:

?

#!/bin/bash

#bin/sh

?

2?shell腳本的開頭會(huì)加版本,版權(quán)等信息:

?

#Date:16:29???2017-3-1

#Author:Created?by??XXX?

#Bloghttp//XXX.com

#Description:?This??scripts??function?is?.....

#Version:1.1

?

3?shell腳本命名應(yīng)以.sh為擴(kuò)展名。

?

例如:name.sh

?

4?shell腳本應(yīng)存放在固定的路徑下

?

例如:/server/scripts

?

5、盡量使用UTF-8編碼,注釋及輸出盡量使用英文

?

6、一般給到執(zhí)行權(quán)限,但一些關(guān)于變量的配置文件不用加執(zhí)行權(quán)限;

?

7、第二行為空格,或者是添加一行空注釋

?

8、接著開始注釋內(nèi)容:文件名、功能描述、作者、最后修改日期、版本號(hào)以及一些說明,還加上郵箱/手機(jī)號(hào)做為聯(lián)系,如果可以,需要加上版權(quán)聲明;?

?

9?注釋內(nèi)容之后空一行開始定義shell腳本中的變量;

?

10?腳本內(nèi)的變量定義,盡量使用大寫,或者大小寫駝峰寫法,或者使用下劃線連接的方式。變量名要見名之意,避免a,b,c類似的定義,變量的定義前后不要用空格。

??????????如果是×××,需要使用declare?-i來聲明。

??????????如果是數(shù)組,則需要使用declare?-a來聲明。

??????????如果是只讀變量,則需要使用declare?-r來聲明。

??????????變量值盡量使用雙引號(hào)引起來,如果要使用強(qiáng)引用,如變量值中包含$符號(hào),則使用”單引號(hào)引起來。

??????????如果要將命令的執(zhí)行結(jié)果賦值給變量,則使用反引號(hào),或者使用$().

11?變量的引用使用以下方式:

?????????${GameZone}

?????????$GameZone

?????????推薦使用第一種,如:tar?zcf?${GameZone}.tar.gz?/apps/data/

12?單引號(hào)和雙引號(hào)混合使用的場(chǎng)景:

?????????echo?Welcome?to?my?school”‘

13?在某些特殊的環(huán)境下,shell腳本里引用的命令,有可能是自己定義的bin路徑,在執(zhí)行的時(shí)候會(huì)報(bào)出command?not?found

?

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

?

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

?

14?建議在腳本執(zhí)行的開始重讀下/etc/profile?或者是自己定義的關(guān)于環(huán)境變量的配置文件,推薦使用source

?

????????如:?source?/etc/profile

???????????????source?/opt/sh/appenv.sh

15?使用here?document

????????如果腳本在執(zhí)行的時(shí)候需要大段輸出提示信息,可是使用以下方式:

????????cat?<<?EOF

???????This?scripts?used?for?XXX

???????Usage:$0?[option]

???????Pls?be?careful.

???????Enjoy?Yourself.

???????EOF

???????如果只是單行提示信息,可是使用echo的方式,可以添加顏色:

???????echo?Welcome?to?use?my?script

16?如果需要在腳本里生成配置文件的模板,也可以使用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

17?如果需要?jiǎng)?chuàng)建臨時(shí)文件,可以使用如下方式:

???????mktemp?-d?/tmp/file$$

18?條件測(cè)試的時(shí)候,盡量使用[[]],而不用[]或者test,因?yàn)?/span>[[]]功能會(huì)更強(qiáng)大??????????????????????????????????????????????

???????[[?-d?/tmp/logs?]]

??????不在使用[?x$NAME”?==?x”?]這種方式;

19?算數(shù)運(yùn)算使用(())或者是中括號(hào),但是記得括號(hào)里面的變量不要再加$

???????((12+i))

???????而非((12+$i))

20?使用高級(jí)變量的用法,比如使用

???????${GameZone:?Error?Message}確保關(guān)鍵變量已經(jīng)定義

???????${GameZone:=S1}?或者設(shè)置默認(rèn)值

???????否則:

???????rm?-rf?${GameZone}/*?后果不堪設(shè)想

21?可以使用&&?||來替代簡(jiǎn)單的if-then-else-fi語句。

22?盡量給每條語句或者代碼段的執(zhí)行給一個(gè)執(zhí)行結(jié)果狀態(tài),如果某條命令執(zhí)行失敗,則exit?N.

???????盡可能使用$?來檢查前面一條命令的執(zhí)行狀態(tài)。

23?流程控制語句盡量使用一下方式:

???????for?I?in?{1..10};do

????????..

???????done

???????while?true;do

????????

???????done

???????if?[];then

????????

???????fi

24?如果命令過長(zhǎng),可以分成多行來寫,比如:

???????./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?\

25?shell腳本并不要求強(qiáng)制縮進(jìn),但是要養(yǎng)成縮進(jìn)的好習(xí)慣,可以使用兩個(gè)空格,建議使用tab鍵。如:

???????if?[];then

?????????

???????fi

26?盡可能多的注釋信息。

27想要獲取當(dāng)前腳本所在目錄,可以使用

??????ScriptDir=$(cd?$(dirname?$0)?&&?pwd)

?

28?盡可能的使用函數(shù)的功能,將不同的功能定義為函數(shù),直接引用函數(shù);

?

29?如果自定義環(huán)境變量,可以專門寫到一個(gè)文件中,避免在/etc/profile中添加;

?

30?禁止使用SUIDSGID以及ACL用戶訪問控制列表的功能,如果需要較高權(quán)限,可以使用sudo

?

31?關(guān)鍵的操作須有日志輸出,專門記錄操作的成功或者失敗以及執(zhí)行的時(shí)間點(diǎn)。

?

32?腳本內(nèi)可能包含敏感信息,如服務(wù)器密碼或者是數(shù)據(jù)庫密碼,如果公開之前先確認(rèn)敏感信息是否已經(jīng)刪除。

?


轉(zhuǎn)載于:https://blog.51cto.com/6854290/2324196

總結(jié)

以上是生活随笔為你收集整理的03—Shell脚本编写规范的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 女同性做受全过程动图 | 91极品国产 | 免费精品| 成人区视频 | 秘密的基地 | 少妇紧身牛仔裤裤啪啪 | 亚洲av无码乱码在线观看富二代 | 日韩av在线高清 | 日韩在线视频不卡 | 欧美福利网 | 亚洲无线视频 | 国产亚韩 | 91天天色 | 日日日夜夜操 | 草草屁屁影院 | 中文字幕一区二区三区四区不卡 | 亚洲a级片| 激情视频免费在线观看 | 美国av导航 | 亚洲午码| 香蕉视频在线看 | 日韩欧美精品一区 | 久久亚洲精品国产精品黑人v | 精品少妇v888av | 欧美一级一区二区 | 久久综合久久综合久久综合 | 久草福利 | 图片区亚洲色图 | 欧美综合一区二区三区 | 国产在线看黄 | 精品国产乱码久久久久久88av | 国产一区二区精品在线 | 精品国产成人亚洲午夜福利 | 美女色综合 | 91激情在线观看 | 国产精品久久久久三级 | 亚洲免费中文字幕 | 性渴老太作爱 | 夜夜精品一区二区无码 | 亚洲系列在线观看 | 欧美日韩成人一区二区三区 | 日本成人免费观看 | 日本亚洲欧美在线 | 91精品人妻互换一区二区 | 国产 欧美 自拍 | 日本少妇激三级做爰在线 | 在线观看一区二区三区四区 | av一区二区在线播放 | 午夜va | 樱花动漫无圣光 | 日日射av| 国产乱淫av免费 | 中文字幕在线视频网 | 亚洲九九色 | 亚洲欧洲免费视频 | 国产精品99久久久久久久久久久久 | 青青草综合在线 | 麻豆成人精品 | 国产精品av网站 | 夜夜高潮夜夜爽 | 天堂俺去俺来也www久久婷婷 | 亚洲AV无码成人精品区东京热 | 国产精品久久久久久久久夜色 | 欧美亚洲一级片 | 麻豆疯狂做受xxxx高潮视频 | 天天色综合1 | 九九热最新视频 | 国产一区二区四区 | 成人激情视频在线播放 | 羞羞涩涩视频 | 欧美精品乱码视频一二专区 | 国产女主播一区二区三区 | 国产精品丝袜 | 欧美黑人又粗又大的性格特点 | 最新国产一区 | 成人在线视频免费观看 | 黄色免费在线观看视频 | 一区二区三区波多野结衣 | 国产免费一区二区 | 色狠狠一区二区三区香蕉 | 污视频91 | 3d动漫精品啪啪一区二区竹菊 | 黑丝一区二区三区 | 尤物网在线 | 青青青青在线 | 操色网 | 男人天堂怡红院 | 亚洲精品久久久久久久久 | 99久久香蕉| 一级片在线免费观看视频 | 亚洲一区二区精品在线 | 国产夫妻在线 | 欧美一区二区三区四区在线 | 日本特黄特色aaa大片免费 | 国产亚洲精品电影 | 亚洲av永久无码精品一区二区国产 | 免费观看日韩毛片 | 在线观看亚洲欧美 | xxxxx在线视频 |