shell腳本的擴充名為 .sh
#!/bin/bash
echo "Hello World !"
#!
是一個約定的标記,後面的參數
/bin/bash
告訴系統這個腳本需要什麼解釋器來執行,即使用哪一種 Shell。
chmod +x ./test.sh #使腳本具有執行權限
./test.sh #執行腳本
注意,一定要寫成 ./test.sh,而不是 test.sh,運作其它二進制的程式也一樣,直接寫 test.sh,linux 系統會去 PATH 裡尋找有沒有叫 test.sh 的,而隻有 /bin, /sbin, /usr/bin,/usr/sbin 等在 PATH 裡,你的目前目錄通常不在 PATH 裡,是以寫成 test.sh 是會找不到指令的,要用 ./test.sh 告訴系統說,就在目前目錄找。
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'
單引号字元串的限制:
單引号裡的任何字元都會原樣輸出,單引号字元串中的變量是無效的;
單引号字串中不能出現單引号(對單引号使用轉義符後也不行)。
雙引号
your_name='qinjx'
str="Hello, I know your are \"$your_name\"! \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 數組
定義數組
數組名=(值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=${array_name[n]}
使用@符号可以擷取數組中的所有元素,例如:
echo ${array_name[@]}
擷取數組的長度
擷取數組長度的方法與擷取字元串長度的方法相同,例如:
取得數組元素的個數
length=${#array_name[@]}
length=${#array_name[*]}
取得數組單個元素的長度
lengthn=${#array_name[n]}
注釋: #
#