shell腳本編程之運算

一、數學運算

  1、expr命令

    此命令可以在命令行執行數學運算操作。

8.jpg

    由于此命令使用時過于麻煩,所以不推薦使用。

  2、方括號和雙圓括號

     $[ EXPRESSION ]

     $(( EXPRESSION ))

     在之前的實例中已經出現過方括號的表達式:$[$a+$b]。

  3、let命令

12.jpg

  4、算術運算符

    x+=y:相當于x=x+y

    x-=y:相當于x=x-y

    x*=y:相當于x=x*y

    x/=y:相當于x=x/y

    x++: 相當于x=x+1

    x–: 相當于x=x-1

二、字符串連接

  變量引用后方直接跟字串時,變量名要加{}。

1.jpg

三、條件測試

  條件測試的表達式可以使用以下三種格式:

    [ expression ]:注意中括號與表達式之間有空格;

    [[ expression ]]:注意中括號與表達之間有空格;

    test expression:上面的兩種格式其實都是test命令的其它格式。

  test命令可以進行3種類型的條件判斷:整數測試、字符串測試、文件測試。 

  1、整數測試

    -eq:測試兩個整數是否相等;

    -ne:測試兩個整數是否不等,不等為真,相等為假;

    -gt:測試一個數是否大于一個數,大于為真,否則為假;

    -lt:測試一個數是否小于一個數,小于為真,否則為假;

    -ge:測試一個數是否大于一個數,大于等于為真,否則為假;

    -le:測試一個數是否大于一個數,小于等于為真,否則為假;

    實例:如果兩個參數相等則顯示"equal",否則顯示"different"。

1.jpg

  2、字符測試

    ==:測試是否相等,等為真,不等為假;

    !=:測試是否不等,不等為真,等為假;

    =~:模式配置;

    -z string:測試指定字符串是否為空,空為真不空為假

    -n string:測試指定字符串是否為空,空則假不空為真

    -s string:測試指定字符串是否不空,不空為真,空則為假

    實例:

2.jpg

3.jpg

   上面是一個使用"-z"的例子,如果改為-n的話則如下圖所示:

4.jpg

    注:變量比較時最好加上引號(單雙都可以),否則如果變量為空的話,會報錯。

  3、文件測試

    -a FILE:測試FILE存在為真,否則為假;

    -e FILE:測試FILE是否存在,存在為真,否則為假;

    -l/-L FILE:軟鏈接文件;

    -b:塊設備;

    -c:字符設備;

    -S:套接字文件;

    -p:命名管道;

    -s:非空文件為真;

    -f FILE:測試FILE是否為普通文件;

    -d FILE:測試指定路徑是否為目錄;

    -r FILE:測試文件對當前用戶是否可讀;

    -w FILE:測試文件對當前用戶是否可寫;

    -x FILE:測試文件對當前用戶是否可執行;

    -N FILE:修改文件時間比訪問時間新則為真;

   內容重定向到文件中,但文件還沒有被打開過的情況

    file1 -nt file2:file1比file2新則為真;

    file1 -ot file2:file1比file2舊則為真。

    實例:如果/test存在則將其重命名為/new-test,否則創建這個目錄:

5.jpg

   實例:給定一個參數,首先判斷此參數是否存在,如果存在判斷是否為文件,若為文件確保其有執行權限:

6.jpg

   驗證:

7.jpg

  4、組合測試條件

    在多個條件間實現邏輯運算

      -a:與關系 [ condition1 -a condition2 ]

      -o:或關系 [ condition1 -o condition2 ]

      !:非關系  [ ! condition ] 或 [ -not condition ]

8.jpg

9.jpg

四、命令間的邏輯關系

    &&:邏輯與,只有當左邊的條件為真時才會執行右邊的語句;

    ||:邏輯或,當左邊的條件為假時才會執行右邊的語句。

   上面的實例也可以使用邏輯與來完成:

10.jpg

10.jpg

原創文章,作者:petmaster,如若轉載,請注明出處:http://www.www58058.com/10690

(0)
petmasterpetmaster
上一篇 2015-12-28
下一篇 2016-01-01

相關推薦

  • Linux Cluster講解

    什么是集群     集群是一組的、通過高速的計算機,它們構成了一個組,并以單一系統的模式加以管理。一個客戶與集群相互作用時,集群像是一個獨立的服務器。集群配置是用于提高可用性和可縮放性。     和傳統的高性能計算機技術相比,集群技術可以利用各檔次的服務器作為節點,系統…

    Linux干貨 2016-11-07
  • 多網卡實驗

    1、虛擬網卡實現一個網卡多個地址     網卡別名多用于虛擬機,可理解為一塊網卡MAC地址對應多個IP地址,這樣比較方便管理,在不需要通過添加網卡的形式就可以使用到新的IP 在此圖可看到     eth1     eth1:100   &n…

    Linux干貨 2016-09-06
  • Linux文件查找命令find和壓縮解壓縮

    概述     Linux系統上一切皆文件,那么隨著時間的推移和管理的服務器增加,在眾多的文件中,如何找到我們需要的文件,這就需要用到文件查找命令了。本章就分享下關于文件查找命令的一些內容和壓縮解壓縮的相關內容。     具體分為一下幾個部分:    …

    Linux干貨 2016-08-16
  • 8-4 文本處理工具

    本節主要了解文本處理工具 文件查看命令:cat  tac  rev     cat [OPTION]… [FILE]…         -E:顯示行結束符$    &…

    Linux干貨 2016-08-07
  • bash特性、bash編程

    bash基礎特性: 命令行展開:~,{} 命令別名:alias,unalias 命令歷史:history 命令和路徑補全:$PATH glob通配符:*,?,[],[^], 快捷鍵:Ctrl+{a,e,l,c,u,k} 命令hash:   bash通配符及特殊符號: 通配符: ?:任意一個字符; *:匹配任意個任意字符; []:匹配括號內的任意一個…

    Linux干貨 2018-03-21
欧美性久久久久