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

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

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

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

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

如何能讓自己的shell顯得不那么業余?下面6點實踐一定有用。

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

一、以下面的語句開場

(1) set -o nounset

在默認情況下,遇到不存在的變量,會忽略并繼續執行,而這往往不符合預期,加入該選項,可以避免惡果擴大,終止腳本的執行。

畫外音:有些變量名的手誤,會讓人崩潰的調試半天,通過這個方式,這類手誤秒發現。

(2) set -o errexit

在默認情況下,遇到執行出錯,會跳過并繼續執行,而這往往不符合預期,加入該選項,可以避免惡果擴大,終止腳本的執行。

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

這兩個選項,都符合fail fast設計理念。

二、封裝函數有必要

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

如上例:

  1. log() 

簡單封裝,能夠省去很多

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

的重復代碼。

畫外音:這個log()有點意思,學到了嗎?

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

如上例:

  1. ExtractBashComments 

  1. egrep "^#" 

的可讀性就高很多。

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

三、使用readonly和local修飾變量

  • readonly:顧名思義,只讀。
  • local:函數內變量。

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

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

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

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

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

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

用單中括號:

用雙中括號:

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

  • 避免轉義問題;
  • 有不少新功能;

新功能包含但不限于:

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

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

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

六、echo不是唯一的調試方法

可以用-n對腳本進行語法檢查。

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

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

當然,也可以在腳本里,添加

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

 

來***指定輸出調試信息。

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

 

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

【本文為51CTO專欄作者“58沈劍”原創稿件,轉載請聯系原作者】

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

責任編輯:趙寧寧 來源: 51CTO專欄
相關推薦

2014-04-22 09:42:12

Bash腳本教程

2020-11-23 16:23:59

CSS設計技術

2017-07-06 08:12:02

索引查詢SQL

2015-11-23 17:34:33

秒借

2018-03-12 21:31:24

區塊鏈

2021-10-26 14:35:10

架構

2017-03-16 08:46:57

延時消息環形隊列數據結構

2019-12-23 16:42:44

JavaScript前端開發

2019-07-26 06:16:37

MySQLSQLexplain

2017-12-20 09:42:39

PythonNginx日志

2018-04-24 14:52:48

LinuxBash腳本

2019-07-24 07:05:51

CPU進程ID端口

2017-09-27 11:00:50

LinuxBash使用技巧

2018-03-12 14:37:50

區塊鏈比特幣架構

2018-03-23 11:56:09

相似性推薦推薦算法推薦

2023-09-29 18:36:57

IDEA編程IDE

2019-08-07 07:04:54

內存緩存數據庫KV

2017-06-07 18:40:33

PromiseJavascript前端

2009-11-05 10:56:31

WCF通訊

2017-11-07 13:04:20

雙十一電腦裝機
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 毛色毛片免费看 | 亚洲精品一区二区久 | 91福利网址 | 91视频在线观看免费 | 国产精品成人一区二区三区 | 日韩一区二区三区四区五区 | 免费的色网站 | 亚洲女人天堂成人av在线 | 日本免费视频 | 中文字幕在线观看视频一区 | 欧美成人a | 国产视频福利一区 | 天天夜夜操 | 色噜噜亚洲男人的天堂 | 久久久这里只有17精品 | 日日干夜夜草 | 国产在线一区二区三区 | 国产精品视频导航 | 97超在线视频| 欧洲在线视频 | 国产免费又色又爽又黄在线观看 | 99re视频在线| 精品久久久久久久久久久久久久 | 久久精品中文字幕 | 一区二区国产精品 | 一区二区视频免费观看 | 一区二区三区高清在线观看 | 在线视频亚洲 | 久久精品国产亚洲 | 精品国产不卡一区二区三区 | 国产九九九 | 九色av| 日韩精品一区二区三区中文在线 | 91在线看| 一区二区三区欧美 | 亚洲在线中文字幕 | 东方伊人免费在线观看 | 日本啊v在线 | 国产一区二区三区在线观看免费 | 亚洲欧美一区二区三区国产精品 | 韩国电影久久 |