linux shell變數
shell簡介
是應用程式,該程式提供了一個介面,使用者通過這個介面訪問作業系統核心服務。 linux的shell分類:
- Bourne Shell (/usr/bin/sh或、/bin/sh) - Bourne again Shell (/bin/bash)—最常用
- c shell(/usr/bin/csh)
- k shell(/usr/bin/ksh)
例子
#!/bin./bash
echo "Hello World!"
注: #! 是一個約定的標記,他告訴系統這個指令碼需要什麼直譯器來執行,即使用哪一種Shell。
執行Shell指令碼有兩種方法:
(shell指令碼的檔案字尾以 .sh 結尾) 1.作為可執行程式
chmod +x ./test.sh #使指令碼具有執行許可權.
./test.sh #執行指令碼 ,必須進入當前目錄
2.作為直譯器引數 直接執行直譯器,其引數是shell指令碼的檔名 例:
./bin/sh test.sh
./bin/php test.php
1.shell變數
定義變數
例:your_name="runoob.com"
注:
- 命令只能是英文字母、數字、下劃線。且首個字母不能是數字開頭。
- 中間不能有空格,可以使用下劃線。
- 不能使用標點符號。
- 不能使用bash裡的關鍵字。
使用變數 使用定義過的變數,只需在變數前加美元符號即可。如:
your_name="qingjx" echo $your_name echo ${your_name}
注:變數名花括號是可選的,主要目的為了幫助直譯器識別變數的邊界。
只讀變數 使用readonly 命令可以將變數定義為制度,只讀變數的值不能被改變。 例:
myUrl="http://www.baidu.com"
readonly myUrl
刪除變數 使用unset命令可以刪除變數。刪除後的變數,不能再次使用。但unset不能刪除readonly變數。
unset myUrl
變數型別:
- 區域性變數
- 環境變數
- shell變數
shell字串
字串是最常用的資料型別之一,字串可以使用單引號(1.單引號中的所有字元都會原樣輸出,即其中的變數值無效。2.單引號中不能出現單獨的單引號,但可以出現成對的單引號
str='hello world'
name="bob,\"$str\" \n"
bob,hello world
拼接字串 雙引號: your_name=“runoob” greeting="hello, “$your_name”! " greeting_1="hello, ${your_name}! " echo $greeting $greeting_1 結果:
hello, runoob! hello,runoob!
單引號:
greeting_2='hello, '$your_name' ! '
greeting_3='hello,'${your_name} ' ! '
echo greeting_2 greeting_3
結果:
hello,runoob! hello,${your_name}!
獲取字串長度
string="abcd"
echo ${#string} #輸出4
提取子字串
string="runoob is a great site"
echo ${string:1:4} #輸出unoo
查詢子字串 查詢字元i或o的位置(那個字母先出現就計算哪個)
string="runoob is a great site"
echo `expr index "$string" io` #輸出4
注:指令碼中`是反引號。
Shell陣列
bash只支援一位陣列,且沒有限制陣列的大小。
定義陣列 在shell命令中,用括號表示陣列,陣列元素用“空格”符號割開。
語法:陣列名=(值1 值2 值3....)
或者
array_name=(
value0
value1
value2
value3
)
還可以單獨定義陣列的各個分量:
array_name[0]=value0
array_name[1]=value1
array_name[n]=valuen
注:可以不適用連續的下標,而且下標的範圍沒有限制。
讀取陣列
讀取陣列的一般格式:${陣列名[下標]}
例:valuen=${array_name[n]}
echo ${array_name[@]} # @、*可以獲取陣列中的所有元素
獲取陣列的長度:和獲取字串的方法相同
length=${#array_name[@]} #取得陣列元素的個數
lengthn=${#array_name[n]} #取得陣列單個元素的長度
Shell註釋:
- 單行註釋: #開頭的行就是註釋
- 多行註釋:
:<<EOF
......
EOF
或
:<<'
......
.