shell腳本的擴(kuò)展名為 .sh
#!/bin/bash
echo "Hello World !"
#! 是一個約定的標(biāo)記,后面的參數(shù)/bin/bash告訴系統(tǒng)這個腳本需要什么解釋器來執(zhí)行,即使用哪一種 Shell。
chmod +x ./test.sh #使腳本具有執(zhí)行權(quán)限
./test.sh #執(zhí)行腳本
注意,一定要寫成 ./test.sh,而不是 test.sh,運(yùn)行其它二進(jìn)制的程序也一樣,直接寫 test.sh,linux 系統(tǒng)會去 PATH 里尋找有沒有叫 test.sh 的,而只有 /bin, /sbin, /usr/bin,/usr/sbin 等在 PATH 里,你的當(dāng)前目錄通常不在 PATH 里,所以寫成 test.sh 是會找不到命令的,要用 ./test.sh 告訴系統(tǒng)說,就在當(dāng)前目錄找。
Shell 變量
your_name="runoob.com"
注意,變量名和等號之間不能有空格.
使用變量
使用一個定義過的變量,只要在變量名前面加美元符號即可,如:
your_name="qinjx"
echo $your_name
echo ${your_name}
變量名外面的花括號是可選的,加不加都行,加花括號是為了幫助解釋器識別變量的邊界
只讀變量
使用 readonly 命令可以將變量定義為只讀變量,只讀變量的值不能被改變。
刪除變量
使用 unset 命令可以刪除變量。語法:
unset variable_name
Shell 字符串
字符串可以用單引號,也可以用雙引號,也可以不用引號。
單引號
str='this is a string'
單引號字符串的限制:
單引號里的任何字符都會原樣輸出,單引號字符串中的變量是無效的;
單引號字串中不能出現(xiàn)單引號(對單引號使用轉(zhuǎn)義符后也不行)。
雙引號
your_name='qinjx'
str="Hello, I know your are \"$your_name\"! \n"
雙引號的優(yōu)點:
雙引號里可以有變量
雙引號里可以出現(xiàn)轉(zhuǎn)義字符
獲取字符串長度
string="abcd"
echo ${#string} #輸出 4
提取子字符串
以下實例從字符串第 2 個字符開始截取 4 個字符:
string="runoob is a great site"
echo ${string:1:4} # 輸出 unoo
# 字符串的索引也是從0開始
查找子字符串
查找字符 "i 或 s" 的位置:
string="runoob is a great company"
echo `expr index "$string" is` # 輸出 8
# 注意這里是``這個符號
注意: 以上腳本中 "`" 是反引號,而不是單引號 "'",不要看錯了哦。*
Shell 數(shù)組
定義數(shù)組
數(shù)組名=(值1 值2 ... 值n)
例如:
array_name=(value0 value1 value2 value3)
或者
array_name=(
value0
value1
value2
value3
)
還可以單獨定義數(shù)組的各個分量:
array_name[0]=value0
array_name[1]=value1
array_name[n]=valuen
可以不使用連續(xù)的下標(biāo),而且下標(biāo)的范圍沒有限制。
讀取數(shù)組
讀取數(shù)組元素值的一般格式是:
${數(shù)組名[下標(biāo)]}
例如:
valuen=${array_name[n]}
使用@符號可以獲取數(shù)組中的所有元素,例如:
echo ${array_name[@]}
獲取數(shù)組的長度
獲取數(shù)組長度的方法與獲取字符串長度的方法相同,例如:
取得數(shù)組元素的個數(shù)
length=${#array_name[@]}
或者
length=${#array_name[*]}
取得數(shù)組單個元素的長度
lengthn=${#array_name[n]}