創建一個shell腳本

使用vim編輯器創建,也可以使用nano編輯器創建

nano lianxi.sh
vim lianxi.sh
#!/bin/bash    腳本的開頭
echo"Hello world !"  echo 表示輸出

學習記錄:關於shell腳本_數組

./lianxi.sh   也可以使用./方法來運行腳本
此方法需要提前更改腳本權限
輸入 chmod +x lianxi.sh來添加權限

變量

變量只包含數字字母和下劃線,不能以數字作為開頭,避免使用特殊字符,避免使用空格,使用大寫字母表示常量PI=3.14

例如:

name=“jack”
ld_abc="956"
var=”look“
a912=“520”
#!/bin/bash
name="jack"
echo $name

學習記錄:關於shell腳本_數組_02

#!/bin/bash
name="Tom"
echo "Hello ,${name}"

學習記錄:關於shell腳本_bash_03

如果要定義的變量是一條命令擇需要加$()或者``括起來

例如:

shuf -i 1-99 -n 1  #隨機輸出1-99中的其中一個數字
#!/bin/bash
number=$(shuf -i 1-99 -n 1)
echo "$number"

學習記錄:關於shell腳本_匹配模式_04

數組

Shell 也支持數組,允許你在一個變量中存儲多個值。

#!/bin/bash
fruit=(apple banana cherry)
echo ${fruit[1]}    #banana
echo ${fruit[@]}   #全部元素
echo ${#fruit[@]}    #長度3

學習記錄:關於shell腳本_數組_05

特殊變量

$0  echo $0  #腳本名字

學習記錄:關於shell腳本_bash_06

$1和$2的用法,我們可以通過在外部輸入參數來給腳本傳遞一些信息。

學習記錄:關於shell腳本_bash_07

學習記錄:關於shell腳本_bash_08

也可以通過外部定義參數來執行腳本

首先註釋掉兩個變量

學習記錄:關於shell腳本_數組_09

在外部輸入定義變量

export name=Tom
export channal=Heaven 然後執行(這種方法定義的變量是普通變量,不屬於環境變量,只是暫時的只有當前會話有效)

學習記錄:關於shell腳本_bash_10

$$學習記錄:關於shell腳本_數組_11

學習記錄:關於shell腳本_bash_12

當前進程的進程id

$? echo $?  #上一條命令的退出碼0 表示成功,輸出其他數字表示失敗

學習記錄:關於shell腳本_匹配模式_13

$# echo $#  #位置參數個數

學習記錄:關於shell腳本_匹配模式_14

$@ echo $@   #所有位置參數列成表

"$*" ec"$*"   

學習記錄:關於shell腳本_數組_15

學習記錄:關於shell腳本_匹配模式_16

學習記錄:關於shell腳本_bash_17

學習記錄:關於shell腳本_數組_18

函數

先定義函數,再調用函數

例如

#!/bin/bash
hello(){
echo "hello,world!"
}                 #定義了一個函數
hello

學習記錄:關於shell腳本_匹配模式_19

if判斷

if-else 
if  condition   如果符合條件
than   command  則輸出什麼什麼
command1
commandN
fi   結尾
if condition 
than command 則輸出
command1
......
else command2  如果if不成立則輸出else
fi
if condition 1    符合條件1
than command1      輸出結果1,2
command2            不符合跳到elif
elif condition2          符合條件2
than command 3          輸出結果3,4
command4
elif condition 3
than command5
command6
else                     若上述都不成立則歸到else
command N
fi

if判斷的格式  if 判斷的[...]格式中 大於使用  -gt 小於使用   -lt

也可以使用((...)),其中大於小於可以直接用>和<。


#!/bin/bash
a="10"
b="33"
if [ $a == $b ]  注意if括號裏面也要也要用空格隔開
then
echo "a等於b"
elif [ $a -gt $b ]
then
echo "a大於b"
elif [ $a -lt $b ]
then
echo "a小於b"
else
echo "沒有符合的條件"
fi

學習記錄:關於shell腳本_匹配模式_20

for 循環

for var in item1,item2,itemN
do
command1
command2
commandN
......
done
for i in ${...};
do
....
done

學習記錄:關於shell腳本_匹配模式_21

學習記錄:關於shell腳本_匹配模式_22

case...esac

case ... esac 為多選擇語句,每個 case 分支用右圓括號開始,用兩個分號;;表示break,即結束。

取值將檢測匹配的每一個模式。一旦模式匹配,則執行完匹配模式相應命令後不再繼續其他模式。如果無一匹配模式,使用星號 * 捕獲該值,再執行後面的命令。

echo “請輸入1-3之間的整數:”
read number
case $number in 
1 ) echo  “你輸入的是1”   
;;
2 ) echo "你輸入的是2"
;;
3 ) echo "你輸入的是“3"
;;
*) echo “你沒有輸入1-3之間的整數”
;;
esac

學習記錄:關於shell腳本_匹配模式_23