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
下一篇 2018-04-10

相關推薦

  • Linux基礎知識(2)

    N31
    第二周

    Linux筆記 2018-06-30
  • 第二周作業

    第二周

    Linux筆記 2018-05-20
  • liunx 基礎

    時間和日期:

    Linux筆記 2018-04-01
  • ansible進階小技巧

    用ansible寫playbook的朋友可能會發現,當配置工作很多時,如果在中間過程出錯了,修改后想重新執行,前面的一大堆步驟讓人感覺很煩躁。雖然提供了“retry”文件,但是卻只是根據host來判斷重新執行,仍然不夠方便;又或者,中間的某些步驟特別耗時,比如下載一個很大的數據包,每次執行特別浪費時間,想要特別的跳過。怎么辦?我猜你就是把不需要的部分給注釋掉…

    Linux筆記 2018-06-03
  • 初學linux你該死記它們

    最笨的方法往往是最好的方法

    Linux筆記 2018-04-08
  • 腳本編程基礎環境設置

    ?程序:指令+數據?程序編程風格:過程式:以指令為中心,數據服務于指令對象式:以數據為中心,指令服務于數據?shell程序:提供了編程能力,解釋執行 ?計算機:運行二進制指令?編程語言:低級:匯編高級:編譯:高級語言–>編譯器–>目標代碼java,C#解釋:高級語言–>解釋器–>機器代碼…

    Linux筆記 2018-04-15
欧美性久久久久