歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Linux編程 >> SHELL編程

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