Shell是什麼
Shell是一個命令行解釋器,它爲用戶提供了一個向Linux內核發送請求以便運行程序的界面系統級程序用戶可以用Shell來啓動、掛起、停止以及編寫一些程序。
語法
1.格式
腳本以 #!/bin/bash開頭
腳本需要有可執行權限(chmod 744 filename)
註釋 :<<!內容 !
2.Shell變量
Shell變量分爲系統變量和用戶自定義變量
系統變量:$HOME, $PWD, $SHELL, $USER等
變量定義
1)定義變量:變量 = 值
2)撤銷變量:unset 變量
3)聲明靜態變量:readonly 變量
#!/bin/bash
A=100
echo "A=$A"
unset A
echo "A=$A"
變量名規則
1)變量名可以有字母、數字、下劃線組成,但不能以數字開頭
2)等號兩側不能有空格 即A=100而不是A = 100
3)變量名稱一般爲大寫
命令的返回值賦值給命令
1)反引號
2)$()
#!/bin/bash
RESULT=`ls -l /home`
echo $RESULT
echo " "
MY_DATE=$(date)
echo "date=$MY_DATE"
3.查看環境變量
#!/bin/bash
echo "path=$PATH"
4.位置參數變量
用戶獲取命令行的參數消息
$n:n爲0代表命令本身,其餘n-1表示參數,n大於9時,用 ${n}表示
$*:代表命令行中的所參數,並把所有參數看出一個整體
$@:代表命令行中的所有參數,並把每個參數分區對待
$#:代表命令行中參數的個數
#!/bin/bash
echo "$0 $1 $2"
echo "$*"
echo "$@"
echo "param_num=$#"
5.預定義變量
指Shell設計者事先定義好的變量,可以直接在Shell腳本中使用
$$ :表示當前進程的進程號(PID)
$!:表示後臺運行的最優一個進程的進程號
$?:表示最後一次執行命令的返回狀態(0代表執行正確,非0代表執行錯誤,具體是幾由命令本身決定)
6.運算符
1) $((運算式)) 或者 $[運算式]
2)expr m+n
3)expr * / % 分別代表乘 除 取餘
#!/bin/bash
TEMP=`expr 2+3`
RESULT=`expr $TEMP \* 4`
echo "result=$RESULT"
求命令行的兩個參數的和
#!/bin/bash
SUM=$[$1+$2]
echo "sum=$SUM"
7.條件判斷
[ condition ] (注意condition前後要有空格)
非空返回true
常用判斷條件
1)比較兩個整數
= 字符串比較
-lt 小於
-le 小於等於
-eq 等於
-gt 大於
-ge 大於等於
-ne 不等於
2)按照文件權限進行判斷
-r 可讀
-w 可寫
-x 可執行
3)按照文件類型判斷
-f 文件存在並且是一個常規的文件
-e 文件存在
-d 文件存在並且是一個目錄
#!/bin/bash
if [ -e /user/local ]
then
echo "exist"
fi
8.IO流程控制
if判斷
if [ condition ]
then
程序
fi
或者
if [ condition ]
then
程序
elif [ condition ]
then
程序
fi
case語句
case $變量名 in
"值 1“)
程序
;;
"值 2“)
程序
;;
............
*)
程序
;;
esac
for循環
for 變量 in 值1 值2.....
do
程序
done
for (( 初始值;循環控制條件;))
do
程序
done
while循環
while [ 條件判斷式 ]
do
程序
done
9.讀取控制檯的輸入
read (選項)(參數)
-p 指定讀取值時的提示符
-t 指定讀取值時等待的時間(秒)如果超時則停止等待
10.函數
分爲系統函數和自定義函數
系統函數舉例
basename /home/test.txt 返回test.txt
basename /home/test.txt .txt 返回test
dirname /home/aaa/test.txt 返回/home/aaa
自定義函數
[ function ] funname[()}
{
Action;
[return int;]
}
調用 funname [值]