十年專注于品牌網(wǎng)站建設(shè) 十余年專注于網(wǎng)站建設(shè)_小程序開(kāi)發(fā)_APP開(kāi)發(fā),低調(diào)、敢創(chuàng)新、有情懷!
      南昌百恒網(wǎng)絡(luò)微信公眾號(hào) 掃一掃關(guān)注
      小程序
      tel-icon全國(guó)服務(wù)熱線:400-680-9298,0791-88117053
      掃一掃關(guān)注百恒網(wǎng)絡(luò)微信公眾號(hào)
      掃一掃打開(kāi)百恒網(wǎng)絡(luò)微信小程序

      百恒網(wǎng)絡(luò)

      南昌百恒網(wǎng)絡(luò)

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

      百恒網(wǎng)絡(luò) 2017-08-15 13757

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

      結(jié)構(gòu)化命令允許你改變程序執(zhí)行的順序。在bash shell中有不少結(jié)構(gòu)化命令,基本的結(jié)構(gòu)化命令就是if-then語(yǔ)句,if-then語(yǔ)句有如下格式。

      if command

      then

      commands

      fi

      如果你在用其他編程語(yǔ)言的if-then語(yǔ)句,這種形式可能會(huì)讓你有點(diǎn)困惑。在其他編程語(yǔ)言中,if語(yǔ)句之后的對(duì)象是一個(gè)等式,這個(gè)等式的求值結(jié)果為TRUE或FALSE。但bash shell的if語(yǔ)句并不是這么做的。

      bash shell的if語(yǔ)句會(huì)運(yùn)行if后面的那個(gè)命令。如果該命令的退出狀態(tài)碼是0 (該命令成功運(yùn)行),位于then部分的命令就會(huì)被執(zhí)行。如果該命令的退出狀態(tài)碼是其他值,then部分的命令就不會(huì)被執(zhí)行,bash shell會(huì)繼續(xù)執(zhí)行腳本中的下一個(gè)命令。fi語(yǔ)句用來(lái)表示if-then 語(yǔ)句到此結(jié)束。

      為了讓大家更好的解釋這個(gè)概念,南昌網(wǎng)絡(luò)公司-百恒網(wǎng)絡(luò)用以下例子向大家說(shuō)明一下:

      $ cat test1.sh

      #!/bin/bash

      # testing the if statement

      if pwd

      then

      echo "It worked"

      fi

      $

      這個(gè)腳本在if行采用了pwd命令。如果命令成功結(jié)束,echo語(yǔ)句就會(huì)顯示該文本字符串。在 命令行運(yùn)行該腳本時(shí),會(huì)得到如下結(jié)果。

      $ ./test1.sh

      /home/Christine

      It worked

      $

      shell執(zhí)行了if行中的pwd命令。由于退出狀態(tài)碼是0,它就又執(zhí)行了then部分的echo語(yǔ)句。

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

      $ 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

      $

      在這個(gè)例子中,我們?cè)趇f語(yǔ)句行故意放了一個(gè)不能工作的命令。由于這是個(gè)錯(cuò)誤的命令,所以它會(huì)產(chǎn)生一個(gè)非零的退出狀態(tài)碼,且bash shell會(huì)跳過(guò)then部分的echo語(yǔ)句。還要注意,運(yùn)行 if語(yǔ)句中的那個(gè)錯(cuò)誤命令所生成的錯(cuò)誤消息依然會(huì)顯示在腳本的輸出中。有時(shí)你可能不想看到錯(cuò)誤信息。

      在then部分,你可以使用不止一條命令。可以像在腳本中的其他地方一樣在這里列出多條命令。bash shell會(huì)將這些命令當(dāng)成一個(gè)塊,如果if語(yǔ)句行的命令的退出狀態(tài)值為0,所有的命令都會(huì)被執(zhí)行;如果if語(yǔ)句行的命令的退出狀態(tài)不為0,所有的命令都會(huì)被跳過(guò)。

      $ 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語(yǔ)句行使用grep命令在/etc/passwd文件中查找某個(gè)用戶名當(dāng)前是否在系統(tǒng)上使用。如果有用戶使用了那個(gè)登錄名,腳本會(huì)顯示一些文本信息并列出該用戶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變量設(shè)置成一個(gè)系統(tǒng)上不存在的用戶,則什么都不會(huì)顯示。

      $ 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

      $

      看起來(lái)也沒(méi)什么新鮮的。如果在這里顯示的一些消息可說(shuō)明這個(gè)用戶名在系統(tǒng)中未找到,這樣可能就會(huì)顯得更友好。

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


      400-680-9298,0791-88117053
      掃一掃關(guān)注百恒網(wǎng)絡(luò)微信公眾號(hào)
      掃一掃打開(kāi)百恒網(wǎng)絡(luò)小程序

      歡迎您的光顧,我們將竭誠(chéng)為您服務(wù)×

      售前咨詢 售前咨詢
       
      售前咨詢 售前咨詢
       
      售前咨詢 售前咨詢
       
      售前咨詢 售前咨詢
       
      售前咨詢 售前咨詢
       
      售后服務(wù) 售后服務(wù)
       
      售后服務(wù) 售后服務(wù)
       
      備案專線 備案專線
       
      ×
      99精品国产自在现线观看| 少妇AV射精精品蜜桃专区| 窝窝午夜色视频国产精品东北| 亚洲欧美日韩中文字幕在线一区| 日本一区二区三区精品视频 | 日本精品视频在线播放| 色综合久久精品中文字幕首页| 99精品免费观看| 亚洲AV无码久久精品成人| 国产女人水真多18毛片18精品| 精品99久久aaa一级毛片| 一本大道无码日韩精品影视_| 狠狠色婷婷久久综合频道日韩| 国内精品久久人妻无码不卡| 国产精品1000夫妇激情啪发布| 久久91精品国产91久| 精品久久久久久无码专区不卡| 精品无码久久久久国产| 日韩精品区一区二区三VR| 久久久精品人妻一区二区三区 | 精品无码综合一区| 国产精品一区三区| 国产情侣大量精品视频| 国产精品九九久久免费视频 | 日本精品少妇一区二区三区| 国产日韩精品一区二区在线观看 | 日韩人妻激情制服丝袜另类| 国产成人精品实拍在线| 国产成人亚综合91精品首页| 国产成人精品男人免费| 国产69精品久久久久999三级| 国产午夜亚洲精品不卡| 国产亚洲蜜芽精品久久| 日韩三级在线观看视频| 日韩精品中文字幕无码一区| 日韩一区二区视频| 日韩精品中文字幕第2页| 日韩深夜福利视频| 亚洲情侣偷拍精品| 久久久久久亚洲精品不卡 | 99久热任我爽精品视频|