成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

6條shell小技巧,讓腳本顯得不再業(yè)余(1分鐘系列)

開發(fā) 開發(fā)工具
如何能讓自己的shell顯得不那么業(yè)余?下面6點(diǎn)實(shí)踐一定有用。本篇文章源自Google的一篇實(shí)踐,抽取了部分1分鐘能讀完的內(nèi)容,加入了一些分析。

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

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

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

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

一、以下面的語句開場

(1) set -o nounset

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

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

(2) set -o errexit

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

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

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

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

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

如上例:

  1. log() 

簡單封裝,能夠省去很多

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

的重復(fù)代碼。

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

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

如上例:

  1. ExtractBashComments 

  1. egrep "^#" 

的可讀性就高很多。

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

三、使用readonly和local修飾變量

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

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

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

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

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

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

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

用單中括號(hào):

用雙中括號(hào):

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

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

新功能包含但不限于:

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

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

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

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

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

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

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

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

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

 

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

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

 

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

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

戳這里,看該作者更多好文

責(zé)任編輯:趙寧寧 來源: 51CTO專欄
相關(guān)推薦

2014-04-22 09:42:12

Bash腳本教程

2020-11-23 16:23:59

CSS設(shè)計(jì)技術(shù)

2017-07-06 08:12:02

索引查詢SQL

2017-03-16 08:46:57

延時(shí)消息環(huán)形隊(duì)列數(shù)據(jù)結(jié)構(gòu)

2015-11-23 17:34:33

秒借

2018-03-12 21:31:24

區(qū)塊鏈

2019-07-26 06:16:37

MySQLSQLexplain

2021-10-26 14:35:10

架構(gòu)

2019-12-23 16:42:44

JavaScript前端開發(fā)

2018-04-24 14:52:48

LinuxBash腳本

2017-12-20 09:42:39

PythonNginx日志

2023-09-29 18:36:57

IDEA編程IDE

2019-08-07 07:04:54

內(nèi)存緩存數(shù)據(jù)庫KV

2017-09-27 11:00:50

LinuxBash使用技巧

2009-11-05 10:56:31

WCF通訊

2017-06-07 18:40:33

PromiseJavascript前端

2018-03-12 14:37:50

區(qū)塊鏈比特幣架構(gòu)

2018-03-23 11:56:09

相似性推薦推薦算法推薦

2019-07-24 07:05:51

CPU進(jìn)程ID端口

2017-11-07 13:04:20

雙十一電腦裝機(jī)
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)

主站蜘蛛池模板: 一级片免费视频 | 色婷婷久久 | 免费99精品国产自在在线 | 在线欧美视频 | 男女午夜免费视频 | 特黄一级 | 免费午夜电影 | 欧美中文字幕一区二区 | 草b视频| 国产精品精品久久久 | 蜜桃黄网| 香蕉视频黄色 | 成年视频在线观看 | 久久国产精品一区 | 日本久久网 | 国产福利资源在线 | 99精品欧美一区二区蜜桃免费 | 国产不卡一| 日韩欧美专区 | 国产高清在线精品一区二区三区 | 精品久久久久久久久久久久久久 | 久久高清亚洲 | 成人在线国产 | 日本欧美国产 | 91国自视频 | 毛片a级毛片免费播放100 | 老司机成人在线 | 国产一区二区三区久久久久久久久 | 国产精品一区久久久 | 久久鲁视频 | 欧美精品影院 | 日日夜夜精品 | 极品在线 | 日韩三级在线 | 做a视频 | 91免费入口 | 精品乱码一区二区三四区视频 | 精品国产99 | 一级片成人 | 超碰在线免费av | 成人做爰69片免费观看 |