shell程式設計學習筆記(一)
阿新 • • 發佈:2018-12-20
導讀
注意,這篇部落格是記錄博主學習的筆記,撰寫風格可能不適合沒有程式設計基礎的讀者。
變數
定義
不需要宣告型別,只需要加賦值號(=)
輸入 | 輸出 |
---|---|
name=’hemim’ echo $name | hemim |
只能以數字和下劃線開頭,如:
輸入 | 輸出 |
---|---|
_name=’hemim’ echo $_name | hemim |
注意
賦值號前後不能加空格,因為shell以空格作為分隔符,每個鍵入詞都作為一個命令
字串
用單引號和雙引號甚至不加引號的值都可以作為字串
輸入 | 輸出 |
---|---|
string=abcd string=‘abcd’ string=“abcd” |
三種賦值方式的區別
首先說不加引號和加引號的區別: 很明顯的是,不加引號,只能定義沒有空格的字串,我們上面說到了shell以空格作為分隔符,如果加了空格,那就不是一個整體的字串了。所以加引號的意義顯而易見的是能把空格也作為字串的一部分。 再說說單雙引號的區別: 單引號會把整個字串原意輸出,而雙引號則會識別字符串的轉義字元,這意味著雙引號中的字串可以加入某些業務邏輯
輸入 | 輸出 |
---|---|
name=hemim echo $name | hemim |
name=’hemim’ echo ‘${name}’ | ${name} |
name=’hemim’ echo “${name}” | hemim |
拼接
字串的拼接不像java和python,java是可以用+來拼接,python用,來拼接,而shell則直接跟在原來的字串後面表示拼接。如:
輸入 | 輸出 |
---|---|
echo “asdf”asd | asdfasd |
echo “asdf”+asd | asdf+asd |
長度
獲取字串長度:用花括號包裹變數,同時在開頭加上#
輸入 | 輸出 |
---|---|
echo ${#name} | 5 |
字串擷取
${name:2:4} 第一個數表示從第幾個字元開始擷取(從1開始),第二個數表示擷取的長度。通常地,第二個數不寫,表示擷取到末尾,第二個數超出了長度範圍也不會報錯,也是擷取到末尾。 全域性定義:name=hemim
輸入 | 輸出 |
---|---|
echo ${name:2:2} | mi |
echo ${name:2} | mim |
echo ${name:2:6} | mim |
字串查詢
用反引號作為操作命令: `expr index $name h` expr後面跟index命令
輸入 | 輸出 |
---|---|
echo `expr index $name h` | 1 |
反引號
被反引號``包裹的值會被識別為linux中的命令
輸入 | 輸出 |
---|---|
echo `date` | Sat Nov 10 16:21:16 CST 2018 |
會輸出當前日期,如果反引號裡的不是命令,則會報錯