Linux學習筆記:bash特性之多命令執行,shell腳本

  今天我們學習了bash特性多命令執行包括各個命令之間的邏輯關係。其中包含“與”“或”“非”命令的執行。下面即爲我們所學習的這些邏輯命令關係之間的關係。

 

  選擇執行結構:

    邏輯運算:

      與:邏輯乘法,&&

        0:成功執行 -->true

        1-255:失敗 -->false


        true && true =true

        true && false = false

        false && true = false

        false && false = false

        “與”運算的短路邏輯運算:只要第一個操作數爲false,則其邏輯運算的結果一定爲false;


        COMMAND1 && COMMAND2

          如果COMMAND1能夠成功執行,則COMMAND2會被執行;

          如果COMMAND1執行失敗,則COMMAND2不會被執行。


        或:邏輯加法,||

          true || true = true

          true || false = true

          false || true = true

          false || false = false


          “或”的短路邏輯運算:只要第一個操作數爲true,其邏輯運算的結果一定爲true;


        COMMAND1 || COMMAND2 

          只要COMMAND1能夠成功執行,COMMAND2就沒必要執行了。

          只有當COMMAND1執行失敗的時候,COMMAND2纔會被執行。


        非:邏輯取反,!,單目運算符

          !STRING:讀取命令歷史空間的內容;

          !true = false

          !false = true


          !COMMAND

          !COMMAND1 && COMMAND2 相當於 COMMAND1 || COMMAND2

          !COMMAND1 || COMMAND2 相當於 COMMAND1 && COMMAND2


        德摩根定律:

          !(A && B) ==!A || !B

          !(A || B) ==!A && !B


        邏輯運算符號優先級:!>&& >||


        異或(雙目運算):比對兩個操作數是否不同,如果不同,則邏輯運算結果爲真;如果相同,則邏輯運算結果爲假;

  shell腳本編程:

  什麼叫編程?簡單來說就是編寫程序源代碼。爲了能夠讓用戶在使用計算機的時候,可以讓計算機以非交互的方式完成某些任務,需要將這些任務編製成爲一個文件,,讓計算機順序讀取,  從而實現功能;

  

編程語言:

    高級語言:

      根據源代碼的處理方式:

        編譯運行語言:源代碼--> 編譯器(編譯)-->彙編器(彙編)-->[鏈接器(庫的鏈接)]-->可以直接執行的二進制文件;

        解釋運行語言:源代碼--> 直接啓動跟源代碼對應的解釋器程序,由解釋器邊解釋邊執行;


      根據其編程過程中的功能的實現是調用庫還是調用外部程序語言;

        完整的編程語言:

          利用庫或編程組件進行編程:


        腳本編程語言:

          解釋器

          shell腳本:調用shell程序,其次調用需要的外部命令文件;命令解釋器

            提供了單一的編程功能接口;過程式編程邏輯的支持;


      根據程序的編寫範式:程序=指令+數據

        過程式編程語言:

          以指令爲中心,圍繞指令(算法)的實現設計數據和數據結構,數據爲指令服務的;


          算法或指令的實現形式:

            順序執行  選擇執行  循環執行


        對象式編程語言:

          以數據爲中心,將數據實例化爲類,圍繞着數據的需求來部署指令

          類、屬性、方法


    低級語言:

      彙編語言


shell腳本編程

  過程式編程語言,解釋運行,依賴於外部程序文件運行;


shell腳本到底是什麼?

  1.純文本文檔--文件中所存儲的數據都是以字符爲單位進行存儲的;

  2.根據用戶的需求來解決用戶問題的大量命令的組合體;

  3.“執行冪等性”--任何命令多次執行的結果是一致的;

    很多命令不具備“執行冪等性”,在shell腳本中就需要使用大量的程序來判斷某個命令是否滿足其運行條件,以避免在運行過程中出現嚴重錯誤;

  

shell腳本中的代碼內容:

  1.首行必須是shebang,(頂格寫)解釋其路徑,必須佔據絕對行首;在執行時,啓動相應的解釋器以解釋腳本內諸多的命令;

    #!/bin/bash

    #!/bin/sh

    #!/usr/bin/python

    #!/usr/bin/perl

  2.在shell腳本中除了shebang之外,以#佔據絕對行首的內容,均爲註釋行;解釋器會忽略這樣的行的內容;

  3.解釋會忽略腳本中所有的空白行;

  4.大量的命令和關鍵字(if,else,then,do,while,for,...)


注意:shell腳本一旦運行是在當前的shell中根據shebang的指示,開啓一個解釋器(子shell)解釋執行代碼內容,shell腳本的內容是在一個子shell進程中實現的。


我們可以利用文本編輯工具來編寫shell腳本:

  nano、vi、vim、emace、pico


推薦使用vim


約定下,腳本文件名的後綴爲.sh 也可以不加


腳本的運行方法:

  1.爲腳本文件賦予執行權限,直接運行此文件;

    chmod +x /PATH/TO/SCRIPT_FILE

    ~]# /PATH/TO/SCRIPT_FILE

    如果在執行腳本時,只寫腳本名不給出路徑的話,必須確保PATH變量中保存的路徑下,能找到該腳本;


  2.直接使用解釋器運行腳本,將腳本作爲解釋器命令的參數;

    bash /PATH/TO/SCRIPT_FILE


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章