日韩性视频-久久久蜜桃-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精品国产色综合久久不卡98 | 婷婷综合国产 | 日本啪啪网站 | 久热国产精品 | 亚洲精品在线视频免费观看 | 人民的名义第二部 | 手机av资源 | 深夜福利视频在线 | av黄色网址| 性视频免费 | 亚洲第一福利视频 | 综合网在线视频 | 黑人操中国女人视频 | 国产蜜臀av一区二区 | 色综合天天综合网天天狠天天 | 99久久精品国产亚洲 | 国产激情一区二区三区 | 五月亚洲婷婷 | 中文字幕韩日 | 国产系列在线观看 | 国产va在线观看 | 伊人免费 | 日韩在线视 | 女教师痴汉调教hd中字 | 老司机久久精品视频 | 午夜伦情 | av男人的天堂网 | 午夜影院免费看 | 午夜免费福利网站 | 中文视频在线观看 | 大尺度电影在线 | 久久精品超碰 | 国产乱淫av麻豆国产免费 | 水蜜桃久久 | 伊人久久大香线蕉av一区 | 男人和女人做爽爽视频 | 精品欧美一区二区精品少妇 | 久久伊人一区 | 亚洲熟女乱色一区二区三区 | 国产福利一区二区三区在线观看 | 日本亚洲一区二区 | 中文字幕在线观看播放 | 欧美日韩一区视频 | 美女在线观看www | 少妇2做爰bd在线意大利堕落 | 色99在线| 一本色道久久综合亚洲 | 午夜久久久久久 | 成 人 黄 色 片 在线播放 | www.久久综合 | 日本成人网址 | 国产精品日韩精品 | 韩国美女视频在线观看18 | 中文无码一区二区三区在线观看 | 亚洲第一区av | 午夜av一区二区三区 | 日韩人妻无码精品久久免费 | 久久亚洲无码视频 | 韩国av一区 | 手机天堂av| 亚洲少妇第一页 | 五月天色视频 | 樱桃香蕉视频 | 桥本有菜aⅴ一区二区三区 在线午夜电影 | 麻豆成人在线观看 | 亚洲视频在线免费播放 | 国产精品99久久久久久久女警 | jizz日本女人| 日本一区中文 | 天天天干| 久久理论电影 | 四虎一国产精品一区二区影院 | 99久久久久久久久久 | 亚洲国产精品99 | 国产字幕在线观看 | 在线看的网站 | 黄色三级图片 | 人人干狠狠干 | 亚洲视频一二三 | 97av在线 | 一区二区三区四区精品视频 | 成人免费无码大片a毛片抽搐色欲 | 少妇大叫太粗太大爽一区二区 | 国产又粗又长又大 | 99看片| 午夜影视福利 | 欧美xxxxxx片免费播放软件 | 麻豆人妻少妇精品无码专区 | 少妇厨房愉情理伦bd在线观看 | 亚洲小说图片区 | 亚洲第5页 | 影音先锋中文字幕在线 | 国产l精品国产亚洲区久久 午夜青青草 | www.狠狠撸.com| 自拍偷在线精品自拍偷无码专区 |