定義變數不加美元 $ 符號,使用變數時需要加美元 $ 符號
#花括號{}可加可不加,{}限定了變數的邊界,所以一般建議加,養成程式設計好習慣your_name=
"runoob.com"
your_name=
"qinjx"
echo
$your_name
echo
$
變數名的規則
命名只能使用英文本母,數字和下劃線,首個字元不能以數字開頭。
中間不能有空格,可以使用下劃線(_)。
不能使用標點符號。
不能使用bash裡的關鍵字(可用help命令檢視保留關鍵字)。
唯讀變數
使用 readonly 命令可以將變數定義為唯讀變數,唯讀變數的值不能被改變。
刪除變數myurl=
""readonly myurl
unset variable_name
變數被刪除後不能再次使用。unset 命令不能刪除唯讀變數。
變數型別
執行shell時,會同時存在三種變數:
(1) 區域性變數 區域性變數在指令碼或命令中定義,僅在當前shell例項中有效,其他shell啟動的程式不能訪問區域性變數。
(2) 環境變數 所有的程式,包括shell啟動的程式,都能訪問環境變數,有些程式需要環境變數來保證其正常執行。必要的時候shell指令碼也可以定義環境變數。
(3) shell變數 shell變數是由shell程式設定的特殊變數。shell變數中有一部分是環境變數,有一部分是區域性變數,這些變數保證了shell的正常執行
字串是shell程式設計中最常用最有用的資料型別(除了數字和字串,也沒啥其它型別好用了),字串可以用單引號,也可以用雙引號,也可以不用引號。
單引號
單引號字串的限制:str=
'this is a string'
單引號裡的任何字元都會原樣輸出,裡面的變數是無效的,不能出現單獨乙個的單引號(對單引號使用轉義符後也不行),但可成對出現,作為字串拼接使用。
雙引號
輸出結果為:your_name=
'runoob'
str=
"hello, i know you are \"$your_name\"! \n"
echo -e $str
雙引號的優點:hello, i know you are "runoob"
!
雙引號裡可以有變數,可以出現轉義字元
拼接字串
輸出結果為:your_name=
"runoob"
#使用雙引號拼接
greeting=
"hello, "
$your_name
" !"
greeting_1=
"hello, $ !"
echo
$greeting
$greeting_1
#使用單引號拼接
greeting_2=
'hello, '
$your_name
' !'
greeting_3=
'hello, $ !'
echo
$greeting_2
$greeting_3
字串的操作hello, runoob ! hello, runoob !
hello, runoob ! hello, $
!
(1)獲取字串長度
(2)提取子字串string=
"abcd"
echo
$#輸出 4
以下例項從字串第 2 個字元開始擷取 4 個字元:
注意:第乙個字元的索引值為 0。string=
"runoob is a great site"
echo
$# 輸出 unoo
(3)查詢子字串
查詢字元 i 或 o 的位置(哪個字母先出現就計算哪個):
注意: 以上指令碼中 ` 是反引號,而不是單引號 ',不要看錯了哦。string=
"runoob is a great site"
echo
`expr index "$string" io`
# 輸出 4
bash支援一維陣列(不支援多維陣列),並且沒有限定陣列的大小。
類似於 c 語言,陣列元素的下標由 0 開始編號。獲取陣列中的元素要利用下標,下標可以是整數或算術表示式,其值應大於或等於 0。
定義陣列
讀取陣列陣列名=
(值1 值2 ... 值n)
寫法一:array_name=
(value0 value1 value2 value3)
寫法二:array_name=
(value0
value1
value2
value3
)寫法三:array_name[0]
=value0
array_name[1]
=value1
array_name[n]
=valuen
獲取陣列的長度$
valuen=
$#獲取其中乙個元素
echo
$#使用@符號可以獲取陣列中的所有元素
單行注釋:加##取得陣列元素的個數
length=
$#或者
length=
$#取得陣列單個元素的長度
lengthn=
$
多行注釋::<<<
eof注釋內容...
注釋內容...
注釋內容...
eof:<<
'注釋內容...
注釋內容...
注釋內容...
':<<
!注釋內容...
注釋內容...
注釋內容...
!
shell指令碼(變數)
1 定義及賦值 格式 變數名 變數值 等號兩邊沒有空格 2 引用 檢視 變數 格式 變數名 例 title shaodianlingxing echo title 輸出 shaodianlingxing 3 雙引號 功能 允許引用 轉義 例如 echo title group 輸出 shaodian...
shell指令碼 變數
1 shell 指令碼中變數分為三種,區域性變數,環境變數,shell變數。區域性變數 定義在函式內部 基本型別 local num hello world 區域性變數在指令碼或命令中定義,僅在當前shell例項中有效,其他shell啟動的程式不能訪問區域性變數。如果同名,shell函式定義的loc...
shell指令碼變數
環境變數和本地變數,環境變數是具有全域性屬性的。在互動式shell下面定義變數 value 100 這定義的即為本地變數,如果要將其變成環境變數則需要export value 匯出環境變數,取消環境變數則可以使用unset命令。環境變數是可以被子程序繼承的更是可以被子子孫孫都繼承的。環境變數在程式替...