日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
6條shell小技巧,讓腳本顯得不再業(yè)余(1分鐘系列)

長文《memcache核心技術(shù)點(diǎn)》閱讀較低,重啟1分鐘系列,快消時代,碎片時間可能大家更喜歡短文,更喜歡技術(shù)實(shí)踐類文章吧。

創(chuàng)新互聯(lián)建站云計(jì)算的互聯(lián)網(wǎng)服務(wù)提供商,擁有超過13年的服務(wù)器租用、電信機(jī)房托管、云服務(wù)器、虛擬主機(jī)、網(wǎng)站系統(tǒng)開發(fā)經(jīng)驗(yàn),已先后獲得國家工業(yè)和信息化部頒發(fā)的互聯(lián)網(wǎng)數(shù)據(jù)中心業(yè)務(wù)許可證。專業(yè)提供云主機(jī)、虛擬主機(jī)主機(jī)域名、VPS主機(jī)、云服務(wù)器、香港云服務(wù)器、免備案服務(wù)器等。

畫外音:說實(shí)話,技術(shù)思路類文章(WHY, HOW),比技術(shù)實(shí)踐類(WHAT)更難寫。

如何能讓自己的shell顯得不那么業(yè)余?下面6點(diǎn)實(shí)踐一定有用。

畫外音:本篇文章源自Google的一篇實(shí)踐,抽取了部分1分鐘能讀完的內(nèi)容,加入了一些分析。

一、以下面的語句開場

(1) set -o nounset

在默認(rèn)情況下,遇到不存在的變量,會忽略并繼續(xù)執(zhí)行,而這往往不符合預(yù)期,加入該選項(xiàng),可以避免惡果擴(kuò)大,終止腳本的執(zhí)行。

畫外音:有些變量名的手誤,會讓人崩潰的調(diào)試半天,通過這個方式,這類手誤秒發(fā)現(xiàn)。

(2) set -o errexit

在默認(rèn)情況下,遇到執(zhí)行出錯,會跳過并繼續(xù)執(zhí)行,而這往往不符合預(yù)期,加入該選項(xiàng),可以避免惡果擴(kuò)大,終止腳本的執(zhí)行。

畫外音:有些Linux命令,例如rm的-f參數(shù)可以強(qiáng)制忽略錯誤,此時腳本便無法捕捉到errexit,這樣的參數(shù)在腳本里是不推薦使用的。

這兩個選項(xiàng),都符合fail fast設(shè)計(jì)理念。

二、封裝函數(shù)有必要

別光顧著一溜往下寫,封裝可以提高復(fù)用。

如上例:

 
 
 
 
  1. log()

簡單封裝,能夠省去很多

 
 
 
 
  1. [$(date +%Y/%m/%d\ %H:%M:%S)]

的重復(fù)代碼。

畫外音:這個log()有點(diǎn)意思,學(xué)到了嗎?

同時,封裝還能提高代碼的可讀性。

如上例:

 
 
 
 
  1. ExtractBashComments

 
 
 
 
  1. egrep "^#"

的可讀性就高很多。

畫外音:有些抬杠的朋友會說,不認(rèn)識英文。

三、使用readonly和local修飾變量

  • readonly:顧名思義,只讀。
  • local:函數(shù)內(nèi)變量。

別圖省事,提高安全性的同時,能避免很多讓人崩潰的莫名其妙的錯誤。腳本寫得專不專業(yè),往往不是什么高深的點(diǎn),從基本功絕逼能體現(xiàn)。

畫外音:據(jù)說,一個C++程序員到什么水平,從ta代碼里const的使用頻度,能夠看出來。

四、使用$()代替`(反單引號)

為什么?看了上面的例子你就懂了:

  • $()能夠支持內(nèi)嵌;
  • $()不用轉(zhuǎn)義;
  • 有些字體,`(反單引號)和’(單引號)很像,容易把人搞暈;

五、使用[[]]代替[]

用單中括號:

用雙中括號:

看出差別了么?更符合人性編碼:

  • 避免轉(zhuǎn)義問題;
  • 有不少新功能;

新功能包含但不限于:

  • || :邏輯or
  • && :邏輯and
  • < :字符串比較(不需要轉(zhuǎn)義)
  • == :通配符(globbing)字符串比較
  • =~ :正則表達(dá)式(regular expression, RegEx)字符串比較

需要注意的是,從bash3.2開始,通配符和正則表達(dá)式都不能用引號包裹了(所以,上面的例子,加了引號就是字面比較)。

所以如果表達(dá)式里有空格,必須存儲到一個變量里,再進(jìn)行通配符與正則的比較。

六、echo不是唯一的調(diào)試方法

可以用-n對腳本進(jìn)行語法檢查。

可以用-v跟蹤腳本里的每個命令的執(zhí)行。

可以用-x跟蹤腳本里的每個命令的執(zhí)行,并附加擴(kuò)充信息。

當(dāng)然,也可以在腳本里,添加

 
 
 
 
  1. set -o verbose
  2. set -o xtrace

來***指定輸出調(diào)試信息。

畫外音:多在自己在機(jī)器上試一下就明白了。

希望這1分鐘大家有收獲。

【本文為專欄作者“58沈劍”原創(chuàng)稿件,轉(zhuǎn)載請聯(lián)系原作者】


分享文章:6條shell小技巧,讓腳本顯得不再業(yè)余(1分鐘系列)
文章網(wǎng)址:http://m.5511xx.com/article/dphhdgi.html