天天看點

Shell腳本(最坑爹的括号)

寫過Sell腳本的同學都應該有這樣的感觸:偶爾多寫了或者少寫了一個空格,就會報出奇奇怪怪的錯誤,由于空格是不可見字元,是以排查此類錯誤最靠譜的方式是,不要犯這個錯誤。

Shell中有一個最基本的指令叫test,它可以測試數值、測試字元串和測試檔案屬性,是用得最多的指令,look:

Shell腳本(最坑爹的括号)

當我們在執行分支語句、循環語句的時候,一般都離不開它,比如下面的腳本

#!/bin/bash

if test -e file && test -r file

then

cat file

fi

上述腳本的含義是:test一下檔案file,如果存在并可讀,就讓它在螢幕上顯示出來。但是上面那麼寫的确不好看。好看的代碼應該是這樣的:

#!/bin/bash

if [ -e file ] && [ -r file ]

then

cat file

fi

注意到:test 被改成成一對方括号 [ ] ,頓時好看多啦!可是你要看清楚,方括号的兩邊必須有空格,如果沒有,那麼等着被系統錯誤羞辱吧……

然而,有些地方又絕對不能有空格,坑你沒商量,比如變量定義指派:

name=Michael

上面的指派号兩邊不能加空格,如果有空格,那麼等着被系統錯誤羞辱吧……