shell腳本邏輯運算及條件判斷

shell腳本基礎,判斷與運算命令用法大全

變量
bash變量類型:
? ? ? ? ? ?環境變量
? ? ?? ? ? 局部(本地)變量
? ? ?? ? ? ? ??聲明環境(全局)變量,賦值:declare -x name= VALUE
? ? ?? ?? ? ? ?刪除環境(全局)變量:unset name
? ? ?? ? ?位置變量
? ? ?? ? ?? ? ?$1 ,$ , ….? ? ?? ? ?shift 輪替
? ? ?? ? ?特殊變量
? ? ?? ? ?? ? ?$?,$#,$*,$@
shell中如何進行算數運算
? ? ?bash中的算術運算:help let
? ? ?? ? ?+,-,*,/,%取模(取余),**(乘方)
? ? ?? ? ?? ? ?? ? ?? ? ?? ? ?例:A=3 B=6
? ? ?1. let 算數運算表達式
? ? ?? ? ?? ? ?? ? ?? ? ?? ? ?let c=$A+$B
? ? ?? ? ?2 $ [算數運算表達式]
? ? ?? ? ?? ? ?? ? ?? ? ?? ? ?$[$A+$B]
? ? ?? ? ?3$((算數運算表達式))
? ? ?? ? ?? ? ?? ? ?? ? ?? ? ?$(($A+$B))
? ? ?? ? ?4expr 算數運算表達式,表達式中各操作數及運算符之間要有空格,而且必須有反引號
? ? ?? ? ? ? ?? ? ?? ? ?? ? ??c=`expr $A + $B `4
? ? ?? ? ?5.隨機數生成 $RANDOM (0-32767)
? ? ?? ? ? ?? ? ?? ? ?? ? ?? ?乘法符號有些場景中需要轉義,如\*
?賦值
? ? ?? ? ?增強型賦值:
? ? ?? ? ?+=,-=,*=,/=,%=
? ? ?? ? ?例如 let count +=3(自加3后賦值)
? ? ?? ? ?自增,自減:
? ? ?? ? ? ? ?? ? ??let var+=1
? ? ?? ? ? ? ?? ? ??let var++
? ? ??? ? ?? ? ? ? ?lat var-=1
? ? ?? ? ? ?? ? ?? ?let var–
—————————————————————————————————————————–
腳本調試
? ? ?? ? ?測試腳本是否有語法錯誤
? ? ? ? ? ? ? ? ? ? bash -n 腳本
? ? ?? ?? ? ?? ? ? ?bash -x 腳本: 調式執行
條件判斷
? ? ?? ? ?bash中如何實現條件判斷
? ? ?? ? ?? ? ?? ? ?條件測試類型:
? ? ?? ? ?? ? ?? ? ?? ? ?? ? ?整數測試
? ? ?? ? ?? ? ?? ? ?? ? ?? ? ?字符測試
? ? ?? ? ?? ? ?? ? ?? ? ?? ? ?文件測試
條件測試的表達式:
? ? ?? ? ? ? ?? ? ??[ expression ]
? ? ?? ? ? ? ?? ? ??[ [ expression ] ] 使用正則表達式用
? ? ?? ?? ? ?? ? ? ?test expression
整數測試
? ? ?? ? ?例 [ $A -eq $ B ]
? ? ?? ? ?? ? ?? ? ?-eq: 測試兩個整數是否相等: 等于,為真|否則,為假
? ? ?? ? ?? ? ?? ? ?-ne: 測試兩個整數是否不等: 不等,為真|否則,為假
? ? ?? ? ?? ? ?? ? ?-gt: 測試一個數是否大于另一個數:大于,為真|否則,為假
? ? ?? ? ?? ? ?? ? ?-lt: 測試一個數是否小于另一個數:小于,為真|否則,為假
? ? ? ?? ? ?? ?? ? ?-ge: 大于或等于
? ? ? ? ?? ? ??? ? ?-le: 小于或等于
文件測試
? ? ?? ? ?例[ -e /etc/passwd ]
? ? ?? ? ?? ? ?? ? ?-e FILE: 測試文件是否存在
? ? ?? ? ?? ? ?? ? ?-f FILE: 測試文件是否為普通文件
? ? ?? ? ?? ? ?? ? ?-d FILE: 測試指定文件是否為路徑
? ? ?? ? ?? ? ?? ? ?-r FILE: 測試當前用戶對指定文件是否有讀權限
? ? ?? ? ?? ? ?? ? ?-w FILE: 測試當前用戶對指定文件是否有寫權限
? ? ?? ? ?? ? ?? ? ?-x FILE: 測試當前用戶對指定文件是否有執行權限
字符測試
? ? ?? ? ?例[ $A == $B ]
? ? ?? ? ?? ? ?? ? ?== 比較字符串,相同即為真,不同即為假
? ? ?? ? ?? ? ?? ? ?!= : 比較字符串,不同即為真,相同即為假
? ? ?? ? ?? ? ?? ? ?=~: 左側字符串是否能被右側的PATTERN(正則)所匹配
? ? ?? ? ?? ? ?? ? ?-n string: 測試指定字符串是否為空,空則真,不空則假
? ? ?? ? ?? ? ?? ? ?-s string: 測試指定字符串是否為空,不空則真,空則假
? ? ?? ? ?? ? ?? ? ?> :
? ? ?? ? ?? ? ?? ? ?< :
邏輯運算
? ? ?? ? ?與,或,非 ,異或(^)
? ? ?? ? ?1:真 0:假
? ? ? ? ? 與 ? ? ?? ? ?? ? ?? ? ?? ? ?? ? ?? ? ?? ? ?或 ? ? ?? ? ?? ? ?? ? ?? ? ?? ? ?? ? ?非
? ? ?? ? ?1 & 0 =0? ? ?? ? ?? ? ?? ? ?? ? ?? ? ?1 & 0 =1 !? ? ?? ? ?? ? ?? ? ?真 = 假
? ? ?? ? ?0 & 1 =0? ? ?? ? ?? ? ?? ? ?? ? ?? ? ?0 & 1 =1 !? ? ?? ? ?? ? ?? ? ?假 = 真
? ? ?? ? ?0 & 0 =0? ? ?? ? ?? ? ?? ? ?? ? ? ? ?0 & 0 =0
? ? ?? ? ?1 & 1 =1? ? ?? ? ?? ? ?? ? ?? ? ? ? ? ?1 & 1 =1
命令間的邏輯關系
? ? ?? ? ?? ? ?? ? ?邏輯與:-a ? ? ?? ? ?&& ? ? ? ? ? ?第一個條件為假時,第二個條件不再判斷
? ? ?? ? ?? ? ?? ? ?? ? ?? ? ?? ? ?? ? ?? ? ?? ? ?? ? ?? ? ?? ? ? 第一個條件為真時,第二個條件必須得判斷
? ? ?? ? ?? ? ?? ? ?邏輯或:-o ? ? ?? ? ?||? ? ??? ? ? ? ?第一個條件為真時,第二個條件不在判斷
? ? ?? ? ?? ? ?? ? ?? ? ?? ? ?? ? ?? ? ?? ? ?? ? ?? ? ? ? ? ? ? ? 第一個條件為假時,第二個條件必須得判斷
? ? ?? ? ?? ? ?? ? ?邏輯非: ? ? ?? ? ?? ? !
控制結構

? ? ?? ? ?? ? ?? ? ?單分支if語句 ? ? ?? ? ?雙分支的if語句? ? ? ? ? ? ? ? ? ? ? 多分支if語句

? ? ?? ? ?if 判斷條件;then ? ? ?? ? ?? ? ?? ? ?if判斷條件;then? ? ? ? ? ? ? ? ? ? ? ? ? if 判斷條件1;then
? ? ?? ? ?? ? ?? ? ?statment1? ? ?? ? ? ?? ? ? ?? ? ? ?? ? statment1? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?statment1
? ? ?? ? ?? ? ?? ? ?statment2 ? ? ?? ? ?? ? ?? ? ??else? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?? ? ? ? ? ? elif 判斷條件2;then
? ? ?? ? ?fi? ? ?? ? ?? ? ?? ? ?? ? ?? ? ?? ? ?? ? ?? ? ?? ? ?? ? ?statment2? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? statment2
? ? ?? ? ?? ? ?? ? ?? ? ?? ? ?? ? ?? ? ?? ? ?? ? ?? ? ?? ? ??fi? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?? ? ? ?? ? ?else
? ? ?? ? ? ?? ? ? ?? ? ? ?? ? ? ?? ? ? ?? ? ? ?? ? ? ?? ? ? ?? ? ? ?? ? ? ?? ? ? ?? ? ? ?? ? ? ?? ? ? ?? ? ? ?? ? ? ?? ? ?statment3
? ? ?? ? ? ?? ? ? ?? ? ? ?? ? ? ?? ? ? ? ? ?? ? ? ?? ? ? ?? ? ? ?? ? ? ?? ? ? ?? ? ? ?? ? ? ?? ? ? ?? ? ? ?? ? ? ? fi
for循環
進入條件,退出條件
for
while
until
for循環語法:
for 變量 in 列表;do
循環體
done

本文來自投稿,不代表Linux運維部落立場,如若轉載,請注明出處:http://www.www58058.com/95623

(0)
簡單不簡單簡單不簡單
上一篇 2018-04-10 11:23
下一篇 2018-04-10 17:55

相關推薦

  • N30-Listen學習匯總

    1.描述計算機的組成及其功能 計算機由CPU,存儲器,I/O設備等部件組成計算機,每一部件分別按要求執行特定的基本功能。 ? ? CPU包含運算器、控制器以及寄存器,其中運算器主要是對數據進行各種運算;而控制器是整個計算機系統的控制中心,負責指揮計算機各部分協調地工作,保證計算機按照預先規定的目標和步驟有條不紊地進行操作及處理;寄存器則用來保存指令執行過程中…

    2018-05-13
  • 第一周作業

    本周作業 1、描述計算機的組成及其功能。 2、按系列羅列Linux的發行版,并描述不同發行版之間的聯系與區別。 3、描述Linux的哲學思想,并按照自己的理解對其進行解釋性描述。 4、說明Linux系統上命令的使用格式;詳細介紹ifconfig、echo、tty、startx、export、pwd、history、shutdown、poweroff、rebo…

    Linux筆記 2018-05-12
  • 文本處理工具sed

    sed:是行編輯器是一款流編輯器,是一門語言,;比grep強大,不光能看還能改,你值得擁有。地址定界:對第幾行進行操作不給地址:對全文處理單地址#指定的行,$最后一行/字符,正則/:被此處模式匹配到的每一行地址范圍:#,#:第幾行到第幾行#,+#:從第#行往后加#行(包括#,)/a字符串/,/b字符串/:從a匹配到b(如果找不到b就會從a打印到最后一行)#,…

    2018-04-19
  • 內核空間與用戶空間,進程與線程以及上下文

    個人理解,比較啰嗦,邏輯性也不強。如果有疑問可以討論,或者有大佬提點也是可以的。

    2018-03-30
  • 文本三劍客之sed

    我們知道,sed被稱為Linux中被稱為文本處理三劍客之一,相比于grep命令匹配內容的功能,sed則能夠做到對匹配到的文本內容對其進行編輯。

    2018-04-15
欧美性久久久久