Shell簡單程式設計學習之一
阿新 • • 發佈:2018-12-16
該練習是在Bourne Again Shell (/bin/bash)環境下進行
連結
-
變數
- 輸出
#!/bin/bash echo "Hello World!"
通過修改檔案許可權,chmod +x /test.sh,使用./test.sh呼叫
輸出:Hello World! -
命名只能使用英文字母,數字和下劃線,首個字元不能以數字開頭。
中間不能有空格,可以使用下劃線(_)。
不能使用標點符號。
不能使用bash裡的關鍵字(可用help命令檢視保留關鍵字)。 -
使用變數
使用一個定義過的變數,只要在變數名前面加美元符號即可,如:
your_name="qinjx"
echo $your_name
echo ${your_name}
變數名外面的花括號是可選的,加不加都行,加花括號是為了幫助直譯器識別變數的邊界,比如下面這種情況:
for skill in Ada Coffe Action Java
do
echo "I am good at ${skill}Script"
done
- 只讀變數
使用 readonly 命令可以將變數定義為只讀變數,只讀變數的值不能被改變。
#!/bin/bash myUrl="http://www.google.com" readonly myUrl myUrl="http://www.runoob.com"
- 刪除變數
使用 unset 命令可以刪除變數。變數被刪除後不能再次使用。unset 命令不能刪除只讀變數。語法:
unset variable_name
- Shell 字串
字串是shell程式設計中最常用最有用的資料型別(除了數字和字串,也沒啥其它型別好用了),字串可以用單引號,也可以用雙引號,也可以不用引號。單雙引號的區別跟PHP類似。單引號內變數講無法被引用。
雙引號的優點:雙引號裡可以有變數,雙引號裡可以出現轉義字元。
your_name='runoob' str="Hello, I know you are \"$your_name\"! \n" echo $str
- 拼接字串
your_name="runoob"
# 使用雙引號拼接
greeting="hello, "$your_name" !"
greeting_1="hello, ${your_name} !"
echo $greeting $greeting_1
# 使用單引號拼接
greeting_2='hello, '$your_name' !'
greeting_3='hello, ${your_name} !'
echo $greeting_2 $greeting_3
輸出結果為:
hello, runoob ! hello, runoob !
hello, runoob ! hello, ${your_name} !
- 提取字串長度
str="my_name"
echo ${#str}
- 找出對應位置的擷取字元
str="www.runoob.com"
echo ${str:1:4}
- 陣列
- Shell 陣列用括號來表示,元素用"空格"符號分割開,語法格式如下:
array_name=(value1 ... valuen)
讀取陣列
讀取陣列元素值的一般格式是:
${array_name[index]}
陣列for迴圈操作
array=(1,2,3,4)
for i in $array
do
echo "${i}"
done
- 引數呼叫
$# 傳遞到指令碼的引數個數
*“用「”」括起來的情況、以"$1 $2 … $n"的形式輸出所有引數。
$$ 指令碼執行的當前程序ID號
$! 後臺執行的最後一個程序的ID號
*相同,但是使用時加引號,並在引號中返回每個引數。
如"[email protected]“用「”」括起來的情況、以"$1" “ n” 的形式輸出所有引數。
$- 顯示Shell使用的當前選項,與set命令功能相同。
$? 顯示最後命令的退出狀態。0表示沒有錯誤,其他任何值表明有錯誤。
呼叫引數前,先定義才能呼叫,函式同理,示例:
fun_run(){
echo "run succeed!"
}
val=$*
for i in $val
do
fun_${i}
done
- 陣列for…in迴圈格式:
for var in string
do
… $var
done
for i in 1 2 3 4
do
echo $i
done