歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux編程 >> SHELL編程 >> shell腳本相關指令

shell腳本相關指令

日期:2017/3/1 9:35:20   编辑:SHELL編程

1.bash和source的區別:bash(包括通過路徑執行腳本)是non-login狀態下,創建子shell進程,執行的shell腳本,因此其間創建的任何變量都將在程序執行完畢後,銷毀,即父進程(原來的shell)是無法訪問這些變量的;source則直接在當前shell環境下執行該shell腳本,因此腳本申請的變量可以被訪問。

2.test -e filename:關於某個檔名的文件類型的判斷,參數:

1)-e:是否存在

2)-f:是否存在且為文本檔案

3)-d:是否存在且為目錄

4)-b:是否存在且為block device

5)-c:是否存在且為character device

6)-S:是否存在且為Socket檔案

7)-p:是否存在且為FIFO(pipe)檔案

8)-L:是否存在且為一個鏈接檔

test -r filename:關於檔案權限的偵測,參數

1)-r:是否存在且有可讀權限

2)-w:是否存在且有可寫權限

3)-x:是否存在且有可執行權限

4)-u:是否存在且有SUID權限

5)-g:是否存在且有SGID權限

6)-k:是否存在且有Sticky bit權限

7)-s是否存在且為非空白文檔

test file1 -nt file2:兩個檔案之間的比較

1)-nt:file1是否比file2文件新

2)-ot:file1是否比file2文件舊

3)-ef:file1與file2是否為同一個檔案,可用在判斷hard link的判定上,主要意義在判定,兩個檔案是否均指向同一個inode。

test n1 -eq n2:兩個整數之間的判斷

1)-eq:兩數相等

2)-ne:兩數值不等

3)gt:n1大於n2

4)lt:n1小於n2

5)ge:n1大於等於n2

6)le:n1小於等於n2

判定字符串數據

1)test -z string:判定字符串是否為空,空,則為true

2)test -n string:判定字符串是否非空,非空為true

3)test str1=str2:判斷str1是否等於str2,相等則為true

4)test str1!=str2:判斷str1是否不等於str2,不等則true

多重條件判定,test -r filename -a -x filename

1)-a:and,兩個同時成立返回true

2)-o:or,任何一同成立

3)!:取反,即不成立返回true

3.在腳本當中可以用[]來實現test的功能,不過需要注意,[]中的的內部兩端必須有空格,另外:

1)在中括號內的每個組件都需要空格來分割

2)在中括號內的變量,最好以雙引號括起來

3)在中括號內的常量最好以單或雙引號括起來

中括號常用於條件判斷語句中

4.shell腳本中的一些特殊變量

1)$#:代表後接的參數的個數

2)$@:代表"$1 $2 $3 $4"

3)$*:代表"$1c$2c$3c$4",其中c為分隔符

4)$n:代表第n個參數

5.shift n:參數變量偏移,即拿掉前面的幾個參數,然後對應的參數也做相應的變化。

6.條件判斷:

if[ 條件判斷1 ]&&[ 條件判斷2 ];then

操作指令

elseif[ 條件判斷1 ]||[ 條件判斷2 ];then

操作指令

elseif[ 條件判斷1 -o 條件判斷2 ];then

操作指令

elseif[ 條件判斷1 -a 條件判斷2 ];then

操作指令

else

操作指令

fi

7.常用端口:

1)80:www

2)22:ssh

3)21:ftp

4)25:mail

5)111:RPC(遠程過程調用)

6)631:CUPS(打印服務功能)

8.case語句:

case $param in

"選項1")

操作指令

;;

"選項2")

操作指令

;;

*) #默認選項

操作指令

;;

esac

9.函數:function,

function fname(){

程序片段

}

10.循環:

1)while do done:當condition成立時,進入循環,直到條件不成立,終止循環

while [ condition ]

do

程序片段

done

2)until do done:當condition條件成立時,就終止循環,否則就持續進行循環

until [ condition ]

do

程序片段

done

3)for...do...done:

for var in con1 con2 con3...

do

程序片段

done

該循環會將con1,con2...依此賦給var,然後執行程序片段

for((初始值;限制值;執行步階))

do

程序片段

done

11.seq n1 n2:生成n1到n2之間的連續數字

12.sh [-nvx] script.sh:執行腳本,參數,

1)-n:不要執行script,僅查詢語法問題

2)-v:在執行script前,先將script的內容輸出到屏幕上

3)-x:將使用到的script內容顯示到屏幕上

Copyright © Linux教程網 All Rights Reserved