shell 進階(待續)
阿新 • • 發佈:2018-12-18
常識:
Shell 程式設計跟 java、php 程式設計一樣,只要有一個能編寫程式碼的文字編輯器和一個能解釋執行的指令碼直譯器就可以了。
Linux 的 Shell 種類眾多,常見的有:
Bourne Shell(/usr/bin/sh或/bin/sh)
Bourne Again Shell(/bin/bash)
C Shell(/usr/bin/csh)
K Shell(/usr/bin/ksh)
Shell for Root(/sbin/sh)
……
本教程關注的是 Bash,也就是 Bourne Again Shell,由於易用和免費,Bash 在日常工作中被廣泛使用。同時,Bash 也是大多數Linux 系統預設的 Shell。
1.bash之hello world
#!/bin/bash
echo "Hello World !"
#!
是一個約定的標記,它告訴系統這個指令碼需要什麼直譯器來執行,即使用哪一種 Shell。
2.bash基礎
2.1 變數
- 變數型別
- 區域性變數:區域性變數在指令碼或命令中定義,僅在當前shell例項中有效.其他shell啟動的程式不能訪問區域性變數.
- 環境變數:所有的程式,包括shell啟動的程式,都能訪問環境變數.有些程式需要環境變數來保證其正常執行.必要的時候shell指令碼也可以自定義環境變數.
- shell變數:shell變數時由shell程式設定的特殊變數.shell變數中有一部分是環境變數,有一部分是區域性變數.這些變數保證了shelll的正常執行.
- 定義變數
your_name="runoob.com"
tips:
- 注意,變數名和等號之間不能有空格,這可能和你熟悉的所有程式語言都不一樣。同時,變數名的命名須遵循如下規則:
- 命名只能使用英文字母,數字和下劃線,首個字元不能以數字開頭。
- 中間不能有空格,可以使用下劃線(_)。
- 不能使用標點符號。
- 不能使用bash裡的關鍵字(可用help命令檢視保留關鍵字)。
- 使用變數
在變數名前加 ” $ ” 即可.(再次賦值時,不需要加 ” $ ” )
${name}
或者$name
(變數名的大括號為可選項.為了方便直譯器識別變數的邊界
{}標識括號內的值為變數) - 只讀變數
使用readonly 命令可以將變數屬性定義只讀.name=
- 刪除變數
unset命令可以刪除變數,直接unset “變數名”
ex:unset“a”
2.2 字串
- 可用單引號或者雙引號
- 單引號:任何字元都會原樣輸出,變數無效,轉義字元無效
- 雙引號:可包含變數,可用轉義字元
- 字串長度:
${#’變數名’}
表示對應變數名的字元長度(ex.