溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

Linux學(xué)習(xí)筆記:bash特性之多命令執(zhí)行,shell腳本

發(fā)布時(shí)間:2020-08-11 00:56:56 來(lái)源:網(wǎng)絡(luò) 閱讀:921 作者:何時(shí)心安 欄目:開(kāi)發(fā)技術(shù)

  今天我們學(xué)習(xí)了bash特性多命令執(zhí)行包括各個(gè)命令之間的邏輯關(guān)系。其中包含“與”“或”“非”命令的執(zhí)行。下面即為我們所學(xué)習(xí)的這些邏輯命令關(guān)系之間的關(guān)系。

 

  選擇執(zhí)行結(jié)構(gòu):

    邏輯運(yùn)算:

      與:邏輯乘法,&&

        0:成功執(zhí)行 -->true

        1-255:失敗 -->false


        true && true =true

        true && false = false

        false && true = false

        false && false = false

        “與”運(yùn)算的短路邏輯運(yùn)算:只要第一個(gè)操作數(shù)為false,則其邏輯運(yùn)算的結(jié)果一定為false;


        COMMAND1 && COMMAND2

          如果COMMAND1能夠成功執(zhí)行,則COMMAND2會(huì)被執(zhí)行;

          如果COMMAND1執(zhí)行失敗,則COMMAND2不會(huì)被執(zhí)行。


        或:邏輯加法,||

          true || true = true

          true || false = true

          false || true = true

          false || false = false


          “或”的短路邏輯運(yùn)算:只要第一個(gè)操作數(shù)為true,其邏輯運(yùn)算的結(jié)果一定為true;


        COMMAND1 || COMMAND2 

          只要COMMAND1能夠成功執(zhí)行,COMMAND2就沒(méi)必要執(zhí)行了。

          只有當(dāng)COMMAND1執(zhí)行失敗的時(shí)候,COMMAND2才會(huì)被執(zhí)行。


        非:邏輯取反,!,單目運(yùn)算符

          !STRING:讀取命令歷史空間的內(nèi)容;

          !true = false

          !false = true


          !COMMAND

          !COMMAND1 && COMMAND2 相當(dāng)于 COMMAND1 || COMMAND2

          !COMMAND1 || COMMAND2 相當(dāng)于 COMMAND1 && COMMAND2


        德摩根定律:

          ?。ˋ && B) ==!A || !B

          ?。ˋ || B) ==!A && !B


        邏輯運(yùn)算符號(hào)優(yōu)先級(jí):!>&& >||


        異或(雙目運(yùn)算):比對(duì)兩個(gè)操作數(shù)是否不同,如果不同,則邏輯運(yùn)算結(jié)果為真;如果相同,則邏輯運(yùn)算結(jié)果為假;

  shell腳本編程:

  什么叫編程?簡(jiǎn)單來(lái)說(shuō)就是編寫程序源代碼。為了能夠讓用戶在使用計(jì)算機(jī)的時(shí)候,可以讓計(jì)算機(jī)以非交互的方式完成某些任務(wù),需要將這些任務(wù)編制成為一個(gè)文件,,讓計(jì)算機(jī)順序讀取,  從而實(shí)現(xiàn)功能;

  

編程語(yǔ)言:

    高級(jí)語(yǔ)言:

      根據(jù)源代碼的處理方式:

        編譯運(yùn)行語(yǔ)言:源代碼--> 編譯器(編譯)-->匯編器(匯編)-->[鏈接器(庫(kù)的鏈接)]-->可以直接執(zhí)行的二進(jìn)制文件;

        解釋運(yùn)行語(yǔ)言:源代碼--> 直接啟動(dòng)跟源代碼對(duì)應(yīng)的解釋器程序,由解釋器邊解釋邊執(zhí)行;


      根據(jù)其編程過(guò)程中的功能的實(shí)現(xiàn)是調(diào)用庫(kù)還是調(diào)用外部程序語(yǔ)言;

        完整的編程語(yǔ)言:

          利用庫(kù)或編程組件進(jìn)行編程:


        腳本編程語(yǔ)言:

          解釋器

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

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


      根據(jù)程序的編寫范式:程序=指令+數(shù)據(jù)

        過(guò)程式編程語(yǔ)言:

          以指令為中心,圍繞指令(算法)的實(shí)現(xiàn)設(shè)計(jì)數(shù)據(jù)和數(shù)據(jù)結(jié)構(gòu),數(shù)據(jù)為指令服務(wù)的;


          算法或指令的實(shí)現(xiàn)形式:

            順序執(zhí)行  選擇執(zhí)行  循環(huán)執(zhí)行


        對(duì)象式編程語(yǔ)言:

          以數(shù)據(jù)為中心,將數(shù)據(jù)實(shí)例化為類,圍繞著數(shù)據(jù)的需求來(lái)部署指令

          類、屬性、方法


    低級(jí)語(yǔ)言:

      匯編語(yǔ)言


shell腳本編程

  過(guò)程式編程語(yǔ)言,解釋運(yùn)行,依賴于外部程序文件運(yùn)行;


shell腳本到底是什么?

  1.純文本文檔--文件中所存儲(chǔ)的數(shù)據(jù)都是以字符為單位進(jìn)行存儲(chǔ)的;

  2.根據(jù)用戶的需求來(lái)解決用戶問(wèn)題的大量命令的組合體;

  3.“執(zhí)行冪等性”--任何命令多次執(zhí)行的結(jié)果是一致的;

    很多命令不具備“執(zhí)行冪等性”,在shell腳本中就需要使用大量的程序來(lái)判斷某個(gè)命令是否滿足其運(yùn)行條件,以避免在運(yùn)行過(guò)程中出現(xiàn)嚴(yán)重錯(cuò)誤;

  

shell腳本中的代碼內(nèi)容:

  1.首行必須是shebang,(頂格寫)解釋其路徑,必須占據(jù)絕對(duì)行首;在執(zhí)行時(shí),啟動(dòng)相應(yīng)的解釋器以解釋腳本內(nèi)諸多的命令;

    #!/bin/bash

    #!/bin/sh

    #!/usr/bin/python

    #!/usr/bin/perl

  2.在shell腳本中除了shebang之外,以#占據(jù)絕對(duì)行首的內(nèi)容,均為注釋行;解釋器會(huì)忽略這樣的行的內(nèi)容;

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

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


注意:shell腳本一旦運(yùn)行是在當(dāng)前的shell中根據(jù)shebang的指示,開(kāi)啟一個(gè)解釋器(子shell)解釋執(zhí)行代碼內(nèi)容,shell腳本的內(nèi)容是在一個(gè)子shell進(jìn)程中實(shí)現(xiàn)的。


我們可以利用文本編輯工具來(lái)編寫shell腳本:

  nano、vi、vim、emace、pico


推薦使用vim


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


腳本的運(yùn)行方法:

  1.為腳本文件賦予執(zhí)行權(quán)限,直接運(yùn)行此文件;

    chmod +x /PATH/TO/SCRIPT_FILE

    ~]# /PATH/TO/SCRIPT_FILE

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


  2.直接使用解釋器運(yùn)行腳本,將腳本作為解釋器命令的參數(shù);

    bash /PATH/TO/SCRIPT_FILE


向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI