Linux之Shell語法詳解

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 [值]

在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章