參考https://www.runoob.com/linux/linux-shell-variable.html
1、Shell 是一個用 C 語言編寫的程序,本章背景shell script,Bourne Again Shell
#!
是一個約定的標記,它告訴系統這個腳本需要什麼解釋器來執行
2、shell 變量:變量名和等號之間不能有空格
運行shell時,會同時存在三種變量:
- 局部變量 局部變量在腳本或命令中定義,僅在當前shell實例中有效,其他shell啓動的程序不能訪問局部變量。
- 環境變量
所有的程序,包括shell啓動的程序,都能訪問環境變量,有些程序需要環境變量來保證其正常運行。必要的時候shell腳本也可以定義環境變量。- shell變量
shell變量是由shell程序設置的特殊變量。shell變量中有一部分是環境變量,有一部分是局部變量,這些變量保證了shell的正常運行
定義:
- 命名只能使用英文字母,數字和下劃線,首個字符不能以數字開頭。
- 中間不能有空格,可以使用下劃線(_)。
- 不能使用標點符號。
- 不能使用bash裏的關鍵字(可用help命令查看保留關鍵字)。
顯式命名: var =start_shell123
語句命名: for file inls /etc
或 for file in $(ls /etc) 將 /etc 下目錄的文件名循環出來。
使用:
$var或者${var}
只讀加readonly : readonly var
刪除:unset
不能刪除只讀變量
3、字符串
str=’’;"";不用引號
單引號’’:
- 單引號裏的任何字符都會原樣輸出
- 單引號字符串中的變量是無效的
- 單引號字串中不能出現單獨一個的單引號(對單引號使用轉義符後也不行),但可成對出現,作爲字符串拼接使用
雙引號""
- 雙引號裏可以有變量
- 雙引號裏可以出現轉義字符
獲取字符串長度#
例
str=abc
echo ${#str}
輸出3
提取子字符串
例
str=abc echo ${str:0:1}
輸出st
4、數組,可以不使用連續的下標,而且下標的範圍沒有限制。
數組名=(值1 值2 ... 值n)
元素間用空格符號分割開例:
array_name=(value0 value1 value2 value3)或
array_name=(
value0
value1
value2
value3
)
讀取數組
${array_name[3]} 輸出value3
${array_name[@]} 輸出全部
獲取數組的長度 #
用法同上
5、註釋
註釋單行
#
註釋多行
:<<EOF...EOF
:<<'...'
:<<!...!