我從其他人的Shell指令碼中學到的

Elliptic_Yang發表於2013-08-20

【感謝@Elliptic_Yang 的熱心翻譯。如果其他朋友也有不錯的原創或譯文,可以嘗試推薦給伯樂線上。】

 

我是一個Shell指令碼迷,也很喜歡從其他人的Shell指令碼里學習一些有趣的東西。最近我偶然接觸到用於方便ssh伺服器雙重認證的 authy-ssh 指令碼。 瀏覽指令碼後我學到了一些很酷的東西,在此也想分享給大家。

 

1. 讓你的echo豐富多彩

很多時候,你會想讓echo能以多種顏色區分不同輸出。比如,綠色表示成功,紅色告知失敗,黃色提示警告。

這裡使用 tput 來配置輸出顏色,輸出文字,最後再恢復預設輸出顏色。如果想對 tpu 瞭解更多,參看 prompt-color-using-tput 。

 

2. 輸出debug資訊

僅當設定DEBUG標誌時才列印除錯資訊。


還有來自於一些很酷的Geeks的單行debug函式:

 

3. 檢查特定的可執行檔案是否存在

這裡使用 which 命令來查詢可執行檔案 curl 的路徑。如果成功找到,則可執行檔案檔案是存在的,否則就不存在。 &>/dev/null 將標準輸出和標準錯誤重定向到 /dv/null (也就是不顯示在終端上了)。

一些朋友建議可以直接使用 which 返回的狀態碼。

 

4. 顯示指令碼的使用說明

在我開始寫Shell指令碼的初期,常會使用 echo 命令顯示指令碼的使用說明。 但當說明的文字較多時,echo 語句就會變得一團糟。隨後我發現,可以使用 cat命令來顯示使用說明。


這裡的 << 稱為 here document,它可以將字串放置在兩個 EOF 之間。

 

5. 使用者設定 vs. 預設配置

我們有時會希望在使用者沒有提供設定引數時能夠使用預設值。

這一語句檢查環境變數 URL ,如果不存在,就將其設定為 localhost

 

6. 檢查字串的長度

${#VARIABLE_NAME} 可以給出字串的長度。

 

7. 為讀取輸入設定時限

 

8. 獲取目錄名和檔名

完結。 祝各位程式設計開心,享受這美好的一天吧!

相關文章