1. 程式人生 > >shell程式設計學習筆記(一)

shell程式設計學習筆記(一)

導讀

注意,這篇部落格是記錄博主學習的筆記,撰寫風格可能不適合沒有程式設計基礎的讀者。

變數

定義

不需要宣告型別,只需要加賦值號(=)

輸入 輸出
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

會輸出當前日期,如果反引號裡的不是命令,則會報錯