十年專注于品牌網站建設 十余年專注于網站建設_小程序開發_APP開發,低調、敢創新、有情懷!
      南昌百恒網絡微信公眾號 掃一掃關注
      小程序
      tel-icon全國服務熱線:400-680-9298,0791-88117053
      掃一掃關注百恒網絡微信公眾號
      掃一掃打開百恒網絡微信小程序

      百恒網絡

      南昌百恒網絡

      shell腳本編程之if-then語句的使用方法

      百恒網絡 2017-08-15 13870

      許多程序要求對shell腳本中的命令施加一些邏輯流程控制。有一類命令會根據條件使腳本跳過某些命令。這樣的命令通常稱為結構化命令(structured command)。

      結構化命令允許你改變程序執行的順序。在bash shell中有不少結構化命令,基本的結構化命令就是if-then語句,if-then語句有如下格式。

      if command

      then

      commands

      fi

      如果你在用其他編程語言的if-then語句,這種形式可能會讓你有點困惑。在其他編程語言中,if語句之后的對象是一個等式,這個等式的求值結果為TRUE或FALSE。但bash shell的if語句并不是這么做的。

      bash shell的if語句會運行if后面的那個命令。如果該命令的退出狀態碼是0 (該命令成功運行),位于then部分的命令就會被執行。如果該命令的退出狀態碼是其他值,then部分的命令就不會被執行,bash shell會繼續執行腳本中的下一個命令。fi語句用來表示if-then 語句到此結束。

      為了讓大家更好的解釋這個概念,南昌網絡公司-百恒網絡用以下例子向大家說明一下:

      $ cat test1.sh

      #!/bin/bash

      # testing the if statement

      if pwd

      then

      echo "It worked"

      fi

      $

      這個腳本在if行采用了pwd命令。如果命令成功結束,echo語句就會顯示該文本字符串。在 命令行運行該腳本時,會得到如下結果。

      $ ./test1.sh

      /home/Christine

      It worked

      $

      shell執行了if行中的pwd命令。由于退出狀態碼是0,它就又執行了then部分的echo語句。

      以下是本公司要舉的另外一個例子。

      $ cat test2.sh

      #!/bin/bash

      # testing a bad command

      if IamNotaCommand

      then

      echo "It worked"

      fi echo "We are outside the if statement"

      $

      $ ./test2.sh

      ./test2.sh: line 3: IamNotaCommand: command not found

      We are outside the if statement

      $

      在這個例子中,我們在if語句行故意放了一個不能工作的命令。由于這是個錯誤的命令,所以它會產生一個非零的退出狀態碼,且bash shell會跳過then部分的echo語句。還要注意,運行 if語句中的那個錯誤命令所生成的錯誤消息依然會顯示在腳本的輸出中。有時你可能不想看到錯誤信息。

      在then部分,你可以使用不止一條命令。可以像在腳本中的其他地方一樣在這里列出多條命令。bash shell會將這些命令當成一個塊,如果if語句行的命令的退出狀態值為0,所有的命令都會被執行;如果if語句行的命令的退出狀態不為0,所有的命令都會被跳過。

      $ cat test3.sh

      #!/bin/bash

      # testing multiple commands in the then section

      #

      testuser=Christine

      #

      if grep $testuser /etc/passwd

      then

      echo "This is my first command"

      echo "This is my second command"

      echo "I can even put in other commands besides echo:"

      ls -a /home/$testuser/.b*

      fi

      $

      if語句行使用grep命令在/etc/passwd文件中查找某個用戶名當前是否在系統上使用。如果有用戶使用了那個登錄名,腳本會顯示一些文本信息并列出該用戶HOME目錄的bash文件。

      $ ./test3.sh

      Christine:x:501:501:Christine B:/home/Christine:/bin/bash

      This is my first command

      This is my second command

      I can even put in other commands besides echo:

      /home/Christine/.bash_history /home/Christine/.bash_profile

      /home/Christine/.bash_logout /home/Christine/.bashrc

      $

      但是,如果將testuser變量設置成一個系統上不存在的用戶,則什么都不會顯示。

      $ cat test3.sh

      #!/bin/bash # testing multiple commands in the then section

      #

      testuser=NoSuchUser

      #

      if grep $testuser /etc/passwd

      then

      echo "This is my first command"

      echo "This is my second command"

      echo "I can even put in other commands besides echo:"

      ls -a /home/$testuser/.b*

      fi

      $

      $ ./test3.sh

      $

      看起來也沒什么新鮮的。如果在這里顯示的一些消息可說明這個用戶名在系統中未找到,這樣可能就會顯得更友好。

      以上就是百恒網絡為大家介紹的關于linux命令行中if-then 語句的使用方法,不知道大家對于這一概念是否有了一定的了解,如果還不是很明白的朋友可在看一遍,或者來電和我們聯系,本公司專業為您講解。作為一家優秀的南昌網絡公司之一,百恒網絡自公司成立以來,一直堅持以人為本,誠信經營,主要服務有網站建設、微信開發、APP開發等,經過十多年的努力奮斗,百恒網絡在業界獲得了廣大用戶朋友的一直好評,良好口碑滿口相傳,大家如果有需要我們服務的地方,可隨時來電和我們聯系,百恒隨時為您效勞!


      400-680-9298,0791-88117053
      掃一掃關注百恒網絡微信公眾號
      掃一掃打開百恒網絡小程序

      歡迎您的光顧,我們將竭誠為您服務×

      售前咨詢 售前咨詢
       
      售前咨詢 售前咨詢
       
      售前咨詢 售前咨詢
       
      售前咨詢 售前咨詢
       
      售前咨詢 售前咨詢
       
      售后服務 售后服務
       
      售后服務 售后服務
       
      備案專線 備案專線
       
      ×
      精品成人一区二区三区免费视频| 成人精品一区二区不卡视频| 久久99精品国产99久久6男男| 亚洲精品人成无码中文毛片 | 久久精品国产四虎| 久久国产精品亚洲一区二区| 华人在线精品免费观看| 久久国产成人精品国产成人亚洲| 日韩特黄特色大片免费视频| 日韩精品亚洲aⅴ在线影院| 国产精品国产三级国产专播下 | 老司机亚洲精品影院| 亚洲国产精品无码久久一线| 国产成人综合日韩精品无码不卡| 久久国产精品偷99| 国产精品户外野外| 国产精品成人69XXX免费视频| 四虎成人精品国产永久免费无码| 亚洲精品无码日韩国产不卡av| 亚洲AV日韩AV永久无码绿巨人| 四虎永久在线精品影院| 国产精品入口麻豆电影网| 最新国产精品自拍| 国产精品手机在线亚洲| 国产精品视频1区| 在线观看麻豆精品国产不卡| 国产精品国产色综合色 | 久久精品国产99国产精偷| 中文字幕在线精品视频入口一区| 91精品国产福利尤物| 99re66热这里只有精品| 99久久精品国产麻豆| 自拍偷自拍亚洲精品情侣| 麻豆精品成人免费国产片| 亚洲高清国产AV拍精品青青草原| 久久精品综合电影| 久热这里只有精品12| 2021国内精品久久久久精免费| 久久久久精品国产亚洲AV无码| 精品国产鲁一鲁一区二区| 国产成人精品福利网站在线|