91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Unix Shell腳本編程知識點總結及范例

發布時間:2020-06-23 03:33:21 來源:網絡 閱讀:3232 作者:dayong_guo 欄目:系統運維

腳本編程語言與編譯型語言:

  1. 腳本編程語言:(Bash)  

  2.    腳本編程語言通常是解釋型(interpreted),主要由解釋器(interpreter)讀入程序代碼,并將其轉換成內部的形式加以執行。  

  3.    優點:  

  4.        能夠輕易處理文件與目錄之類的對象。  

  5.    缺點:  

  6.        運行效率通常不如編譯型語言  

  7. 編譯型語言:(C、C++、Java、Fortran、Ada、Pascal)  

  8.    編譯型語言多半運作于底層,所處理的是字節、整數、浮點數或其它及其機器層經的對象。

SHELL腳本的基本語法格式:

  1. 腳本必須以#!開頭:(# cat /etc/shells)  

  2. 例如#!/bin/bash(解釋器)  

  3. # 其中間可以添加一些注釋信息,例如腳本的使用方法、腳本的功能、創建日期、作者等相關信息  

  4. 然后賦予腳本具有執行權限,# chmod +x scripts.sh  

  5. 執行則使用./scripts.sh ##也可以將此腳本的路徑添加到PATH變量中,以后直接使用腳本名稱直接運行。  

  6. 腳本的測試工具bash:  

  7. -n:檢查腳本是否有語法錯誤,有則顯示錯誤信息,否則無信息(沒有消息才是最好的消息)  

  8. -x:檢查腳本在執行中的詳細過程(排錯時,經常會用到)  

  9. exit:退出腳本(其數值為0-255)  

  10. 如果腳本沒有明確定義退出碼,那么在執行腳本結束前的退出碼為此腳本的退出碼。  

  11. # echo $?     ##查看上一個命令執行結果所顯示的狀態碼

SHELL腳本的邏輯關系總結:

  1. 邏輯與:符號為&&:

  2. 如果其中一個為假,則結果一定為假  

  3. 如果第一個條件結果為假,則第二個條件不用再判斷,最終結果已顯示  

  4. 如果第一個條件結果為真,則第二個條件必須判斷

  5. 范例:

  6. # useradd redhat && echo "redhat" | passwd --stdin redhat
    解說:如果useradd redhat執行成功,則繼續執行下一條命令,否則終止。

  1. 邏輯或||:

  2. 如果其中一個條件結果為真,則結果一定為真,不用檢查后面的語句  

  3. 如果其中一個條件結果為假,則檢查下一個條件語句  

  4. 范例:

  5. # id redhat || useradd redhat  

  6. 解說:如果redhat用戶存在,就顯示redhat用戶相關信息,否則添加此賬戶。  

  7. 邏輯與和邏輯或聯合使用范例:  

  8. # id redhat && echo “redhat already existing“ || useradd redhat  

  9. 解說:如果redhat用戶存在,則顯示redhat用戶已存在,否則添加此賬戶。

條件判斷語句總結:

  1. 單分支if語句雙分支if語句     多分支if語句case選擇語句  

  2. if 判斷條件 ;then    if 判斷條件;then     if 判斷條件;thencase $1 in

  3.   statement           statement          statement                  string)  

  4.   ......              ........           .........                      statement;;  

  5. fi                  else               elif 判斷條件;then             string2)  

  6.                       statement          statement                      statement;;  

  7.                       .....              .........                  ......)  

  8.                    fi                 elif 判斷條件;then                 statement;;  

  9.                                                 statement           esac  

  10.                                                 .........  

  11. else

  12.                                                 statement  

  13.                                              fi

范例:

Unix Shell腳本編程知識點總結及范例

  1. 腳本分析:  

  2. 主要功能:傳遞一個不同的參數,來完成用戶的創建、添加密碼、刪除用戶。  

  3. 詳細說明:  

  4. 當我們傳遞--add參數給此腳本時,此腳本為完成指定用戶的添加,如果添加的用戶存在,則提示用戶以存在,否則添加指定用戶并創建以用戶為自身的密碼;

  5. 當我們傳遞--del參數給此腳本時,此腳本會刪除我們指定的用戶,如果存在則刪除此用戶,否則提示用戶不存在。

  6. 當我們傳遞--help參數給此腳本時,此腳本會給我們現實腳本的使用方法。

  7. 當我們傳遞其它參數時,會提示無法識別的選項。


POSIX的結束狀態總結:

  1. 0:      ##命令成功所顯示的狀態  

  2. >0:     ##在重定向或單詞展開期間(~、變量、命令、算術展開及單詞切割)失敗  

  3. 1-125   ##命令不成功所顯示的狀態。  

  4. 126     ##命令找到了,但文件無法執行所顯示的狀態  

  5. 127     ##命令找不到,所顯示的狀態  

  6. >128    ##命令因收到信號而死亡

替換運算符總結(變量的賦值):

  1. ${varname:-word}  

  2.    如果varname存在且非null,則返回其值;否則,返回word;  

  3.    用途:如果變量未定義,則返回默認值  

  4.    范例:如果count未定義,則${count:-0}的值為0  

  5. ${varname:=word}  

  6.    如果varname存在且非null,則返回其值;否則,將varname設置為word,并返回其值;  

  7.    用途:如果變量未定義,則設置變量為默認值  

  8.    范烈:如果count未定義,則${count:=0}的值為0  

  9. ${varname:+word}  

  10.    如果varname存在且非null,則返回word;否則,返回null;  

  11.    用途:為測試變量的存在  

  12.    范例:如果count已定義,則${count:+1}的值為1  

  13. ${varname:?message}  

  14.    如果varname存在且非null,則返回其值;否則顯示varname:message,并退出當前命令或腳本;  

  15.    用途:為了捕捉由于變量未定義所導致的錯誤。  

  16.    范例:如果count未定義,${count:?"undefined!"}則顯示count:undefined!

模式匹配運算符總結:

  1. 假設path變量的值為:/etc/sysconfig/network-scripts/ifcfg-eth0.text.bak  

  2. ${variable#pattern}:  

  3.    如果模式匹配于變量值的開頭處,則刪除匹配的最短部分,并返回剩下的部分;  

  4.    范例:echo ${path#/*/}的值為etc/sysconfig/network-scripts/ifcfg-eth0.text.bak  

  5. ${variable##pattern}  

  6.    如果模式匹配于變量值的開頭處,則刪除匹配的最長部分,并返回剩下的部分;  

  7.    范例:echo ${path##/*/}的值為ifcfg-eth0.text.bake  

  8. ${variable%pattern}  

  9.    如果模式匹配于變量的結尾處,則刪除匹配的最短部分,并返回剩下的部分;  

  10.    范例:echo ${path%.*}的值為/etc/sysconfig/network-scripts/ifcfg-eth0.text  

  11. ${variable%%pattern}  

  12.    如果模式匹配于變量的結尾處,則刪除匹配的最長部分,則返回剩余部分。  

  13.    范例:echo ${path%%.*}的值為/etc/sysconfig/network-scripts/ifcfg-eth0  

  14. ${#variable}  

  15.    顯示variable變量值的字符長度

Shell腳本常用的循環語句總結:

  1. for循環                       while循環                 until循環  

  2. for 變量 in 列表 ;do    while condition(條件);do      until condition ;do  

  3.    command...              statements                      statements  

  4. done                    done                            done  


  5. while循環:只要condition滿足條件,while會循環  

  6. until循環:只要condition不滿足條件,until會循環

test命令

  1. test命令可以處理shell腳本中的各類工作,它產生的不是一般輸出,而是可使用退出狀態,test接受各種不同的參數,可控制它要執行哪一種測試  

  2. 語法:  

  3.    test [ expression ]  

  4.    test [ [expression] ]  

  5. 用途:  

  6.    為了測試shell腳本里的條件,通過退出狀態返回其結果。  

  7. 行為模式:  

  8.    test用來測試文件的屬性、比較字符串、比較數字  

  9. 主要選項與表達式:  

  10. string      string不是null

  11. -b file     file是塊設備文件(-b)  

  12. -c file     file是字符設備文件(-c)  

  13. -d file     file為目錄(-d)  

  14. -e file     file是否存在  

  15. -f file     file是一般文件(-)  

  16. -g file     file有設置它的setgid位  

  17. -h file     file是一個符號鏈接  

  18. -r file     file是可讀的  

  19. -s file     file是socket  

  20. -w file     file是可寫的  

  21. -x file     file是可執行的,或file是可被查找的目錄  

  22. s1 = s2     s1與s2字符串相同  

  23. s1 != s2    s1與s2字符串不相同  

  24. n1 -eq n2   整數n1與n2相等  

  25. n1 -ne n2   整數n1與n2不相等  

  26. n1 -lt n2   整數n1小于n2  

  27. n1 -gt n2   整數n1大于n2  

  28. n1 -le n2   整數n1小于或等于n2  

  29. n1 -ge n2   整數n1大于或等于n2  

  30. -n string   string是非null

  31. -z string   string為null特殊參數變量

  32. 在bash shell中有些特殊變量,它們會記錄命令行參數的個數。例如$#

  33. 你可以只數一下命令行中輸入了多少個參數,而不同測試每個參數。bash為此提供了一個特殊的變量,就是上面所提到的$#

  34. $#的說明

    1. $#特殊變量含有腳本運行時就有的命令行參數的個數。你可以在腳本中任何地方來調用這個特殊變量來調用$#來計算參數的個數

  35. 范例:

    1. vim Count.sh

      #!/bin/bash

      #Script Name: Count.sh

      # Count Parameters number


      echo There were $# parameters.


      chmod +x Count.sh

      ./Count.sh 1 2 3

      There were 3 parameters.


下面來說下${!#}的作用?

既然$#變量含有參數的總數量,那么${!#}可以調用最后一個參數的變量名稱。

范例:

vim Count-1.sh

#!/bin/bash

#Script Name: Count-1.sh

# Print last parameter

params=$#

echo "The last parameter is "$params"

echo "The last parameter is "${!#}"

:wq


chmod +x Count-1.sh

./Count-1.sh  1 2 3

The last parameter is 3

The last parameter is 3








向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

湘阴县| 永登县| 延庆县| 随州市| 泸州市| 汕尾市| 樟树市| 北京市| 加查县| 扎赉特旗| 江口县| 调兵山市| 旺苍县| 晋城| 淮安市| 汉源县| 仲巴县| 昌平区| 成安县| 辽宁省| 土默特右旗| 嘉祥县| 上杭县| 依安县| 平阳县| 靖远县| 兴和县| 五原县| 呼和浩特市| 海伦市| 聂拉木县| 惠水县| 屏南县| 河北区| 思茅市| 抚顺县| 金阳县| 花莲市| 乳山市| 东莞市| 两当县|