天天看點

shell腳本程式設計未完待續....

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]}

注釋:

#

未完待續....

繼續閱讀