創建一個shell腳本
使用vim編輯器創建,也可以使用nano編輯器創建
nano lianxi.sh
vim lianxi.sh
#!/bin/bash 腳本的開頭
echo"Hello world !" echo 表示輸出
./lianxi.sh 也可以使用./方法來運行腳本
此方法需要提前更改腳本權限
輸入 chmod +x lianxi.sh來添加權限
變量
變量只包含數字字母和下劃線,不能以數字作為開頭,避免使用特殊字符,避免使用空格,使用大寫字母表示常量PI=3.14
例如:
name=“jack”
ld_abc="956"
var=”look“
a912=“520”
#!/bin/bash
name="jack"
echo $name
#!/bin/bash
name="Tom"
echo "Hello ,${name}"
如果要定義的變量是一條命令擇需要加$()或者``括起來
例如:
shuf -i 1-99 -n 1 #隨機輸出1-99中的其中一個數字
#!/bin/bash
number=$(shuf -i 1-99 -n 1)
echo "$number"
數組
Shell 也支持數組,允許你在一個變量中存儲多個值。
#!/bin/bash
fruit=(apple banana cherry)
echo ${fruit[1]} #banana
echo ${fruit[@]} #全部元素
echo ${#fruit[@]} #長度3
特殊變量
$0 echo $0 #腳本名字
$1和$2的用法,我們可以通過在外部輸入參數來給腳本傳遞一些信息。
也可以通過外部定義參數來執行腳本
首先註釋掉兩個變量
在外部輸入定義變量
export name=Tom
export channal=Heaven 然後執行(這種方法定義的變量是普通變量,不屬於環境變量,只是暫時的只有當前會話有效)
$$
當前進程的進程id
$? echo $? #上一條命令的退出碼0 表示成功,輸出其他數字表示失敗
$# echo $# #位置參數個數
$@ echo $@ #所有位置參數列成表
"$*" ec"$*"
函數
先定義函數,再調用函數
例如
#!/bin/bash
hello(){
echo "hello,world!"
} #定義了一個函數
hello
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
for 循環
for var in item1,item2,itemN
do
command1
command2
commandN
......
done
for i in ${...};
do
....
done
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