Linux系統(tǒng)Bash(Shell)基礎知識(2)-創(chuàng)新互聯(lián)

關于shell腳本的應用上次已經(jīng)對一些較基本的內容進行闡述,在此對shell腳本進行更進一步的了解--shell腳本的編程。

成都創(chuàng)新互聯(lián)從2013年創(chuàng)立,先為成華等服務建站,成華等地企業(yè),進行企業(yè)商務咨詢服務。為成華企業(yè)網(wǎng)站制作PC+手機+微官網(wǎng)三網(wǎng)同步一站式服務解決您的所有建站問題。

 在講述shell腳本的編程之前,先講述一下關于編程語言的概念;

 編程語言可分為高級語言,低級語言,機器語言;

 區(qū)分的依據(jù)是離硬件的遠近,效率高級語言是編程語言中最接近人類自然語言的一種語言,轉化成計算機能夠理解的機器語言的效率就低,而低級語言也就是匯編語言,作為較靠近機器語言的語言,轉化成計算機能夠理解的機器語言的效率就高;機器語言作為最接近計算機底層大量物理硬件的語言,為了能讓用戶在使用計算機的時候以非交互式的方式完成某些任務,需要將這些編制成一個文件,讓計算機順序讀取,從而實現(xiàn)功能;人們利用高級語言,這種比較接近人類的自然語言編寫代碼,進行編譯,轉化成匯編語言,再由編譯器轉換成計算機能夠理解的機器語言去訪問在計算機最底層的大量的物理設備;用下面的路線可表示;

 編程語言:

    應用級語言->系統(tǒng)級語言->微碼語言->機器語言

 高級語言:

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

 編譯運行語言:

     根據(jù)高級語言寫出的源代碼,經(jīng)過編譯器編譯成微碼語言也就是匯編語言,匯編語言再      使用匯編器將匯編語言轉化成二進制代碼即機器語言,計算機再根據(jù)機器語言所表達的      內容,將代碼轉化成可以直接執(zhí)行的二進制文件。

 解釋運行語言:

     根據(jù)高級語言編寫的源程序可以直接啟動跟源代碼對應的解釋器程序,再由解釋器一邊      解釋一邊執(zhí)行;

 ②根據(jù)其編程過程中的功能的實現(xiàn)是調用庫還是調用外部程序文件:

 完整編程語言:

     利用庫或編程組件進行編輯;

 腳本編程語言:

     解釋器,shell腳本,調用shell程序其次調用需要的外部命令文件,命令解釋器提供了      單一功能的編程接口,過程式編程邏輯的支持;

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

 過程式編程語言:

      以指令為中心,圍繞指令(算法)的實現(xiàn)設計數(shù)據(jù)和數(shù)據(jù)結構,數(shù)據(jù)是要為指令服務       的;

 對象式編程語言:

      以數(shù)據(jù)為中心,將數(shù)據(jù)實例化為類,圍繞著數(shù)據(jù)的需求來部署指令,類,屬性(描述       某個類中的具體對象),方法;

 Linux的shell編程作為一種高級程序設計語言,是個解釋性語言,不需要編譯它有變量,關鍵字和各種順序,選擇,循環(huán)的控制語句,如if,else,while,continue,break等語句,也支持函數(shù)模塊,有自己的語法結構;

 shell腳本的特點:

 1.shell腳本的編寫都需要在文本文檔中編寫,通過調用當前文本文檔調用shell腳本;

 2.shell腳本是以許多命令的組合,由各種控制語句結合;

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

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

 在編寫shell腳本的過程當中,第一行的絕對行首必須是解釋器的路徑即shebang,當前shell腳本的命令的運行需要在哪個解釋器的解釋下運行,解釋器的解釋需要逐條解釋,解釋執(zhí)行一條命令后才能解釋執(zhí)行下一條命令;否則會出現(xiàn)解釋錯誤,無法往下執(zhí)行;解釋器的路徑為“#!”開頭,而在shell腳本中“#”表示當前shell腳本的注釋,注釋必須放在當前行的絕對行首,shell腳本在運行時會忽略這樣的內容;

 例如:

 #!/bin/bash(執(zhí)行這個文件,并且用這個文件去解釋在文本文檔中所有的內容)

 #!/bin/sh

 #!/usr/bin/python

 #!/usr/bin/perl

 # hello(注釋行)

 怎樣編寫shell腳本的內容?

 我們可以利用多種文本編輯器來編寫shell腳本的內容

 如vi,vim,nano,emacs,pico等;

 在次推薦使用vim,vim作為vi的升級版本,功能更加齊全,比vi方便許多,更重要的是,vim在shell腳本編寫的過程中可以使用高亮度的顏色標識腳本中的變量,關鍵字,控制結構的重要字符,可以在一定程度上檢測shell腳本的正確度;

 shell腳本的運行方法有:

 ①

 直接運行shell腳本的路徑:

 例如

 $./usr/men  //這樣可以直接運行在當前目錄下的文本文件中的shell腳本內容

 注意:在使用上述方式調用時,必須需為當前shell腳本賦予執(zhí)行的權限;

 如 chmod u+x 。/usr/men

 ②

 以腳本名作為bash參數(shù),其一般形式是:

 $bash 腳本名 [參數(shù)]

 其好處是一個shell腳本可以處理多種情況;

 ③將shell腳本的權限定義為可執(zhí)行,將其加入到PATH的執(zhí)行路徑中,直接調用shell腳本名:

 如果要把shell腳本名直接當命令使用,首先要為shell腳本名賦予執(zhí)行權限,因為shell腳本文件都是文本文件,文本文件默認都不具備執(zhí)行權限;

 如

 $chmod u+x ex2

 然后將腳本所在的目錄添加到命令搜索路徑PATH中

 $PATH=$PATH:./ex2

 把當前工作目錄以“.”表示,添加到命令搜索路徑;這樣就可以直接執(zhí)行腳本文件名;

 $ex2

 shell腳本編寫的重要結構:

 多命令執(zhí)行結構:

 可以實現(xiàn)多條命令的結合,使多條命令共享資源;如“;”,“|”;冒號“;”可以將多條沒有關聯(lián)的命令聯(lián)合在一起執(zhí)行,而“|”管道線結構能使上一條命令的輸出數(shù)據(jù)流,作為下一條命令的輸入數(shù)據(jù)流,簡單來說,“|”管道線的結構命令之間需要具有某種關聯(lián)才可以實現(xiàn);

 如

  #COMMAND|COMMAND...

  #COMMAND;COMMAND...

 在多命令執(zhí)行結構中有這幾種結構:

 選擇執(zhí)行結構:判斷是非正誤,采用“&&”,“||”,“!”的形式;

 邏輯運算:

    與(AND):邏輯乘法&&,作為雙目運算符;他放在兩個邏輯表達式中間,僅當兩個表達式         為真時,結果才為真;

      狀態(tài)返回值:0->success->true

          1-255->fatlure->false

          true&&true=true

          true&&false=false

          false&&true=false

          false&&false=false

     “與”的短路邏輯運算,只要第一個操作數(shù)為false,則其邏輯運算的結果一定位false

     COMMAND1&&COMMAND2:如果第一個命令能成功執(zhí)行,則第二個命令才有必要執(zhí)行,如果      COMMAND1執(zhí)行失敗,則COMMAND2無法執(zhí)行;

    或(OR):邏輯加法||,作為雙目運算符;他放在兩個邏輯表達式中間,其中只有一個表        達式為真,結果就為真

      true||true=true

      true||false=true

      false||true=true

      false||false=false

      只要第一個操作數(shù)為true則其邏輯運算的結果一定為真;

      COMMAND1||COMMAND2(只要COMMAND1能夠成功執(zhí)行,后面的命令可以沒必要執(zhí)行,只       有當COMMAND1執(zhí)行失敗時,COMMAND2才會執(zhí)行)

    非(?。哼壿嬋》?,!,作為單目運算符;他放在邏輯表達式之前,使原來為真的表達        式變?yōu)榧?,使原來為假的表達式變?yōu)檎妫?/p>

      !string:讀取命令歷史空間的內容,在此“!”代表的意義與非無關;

      ! COMMAND:加空格,命令執(zhí)行狀態(tài)的取反

      !COMMAND1&&COMMAND2:相當于COMMAND1||COMMAND2

      如果COMMAND1成功執(zhí)行則COMMAND2不需要執(zhí)行;

      如果COMMAND1不能成功執(zhí)行則COMMAND2需要執(zhí)行;

      !COMMAND1||COMMAND2:相當于COMMAND1&&COMMAND2

      如果COMMAND1成功執(zhí)行則COMMAND2會被執(zhí)行;

      如果COMMAND1不能執(zhí)行則COMMAND2不會被執(zhí)行;

      邏輯運算符優(yōu)先級:

      !>&&>||

    異或:比對兩個操作數(shù)的相同與否,如果不同則邏輯運算結果為真,如果相同則為假;雙       目運算符;

另外有需要云服務器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內外云服務器15元起步,三天無理由+7*72小時售后在線,公司持有idc許可證,提供“云服務器、裸金屬服務器、高防服務器、香港服務器、美國服務器、虛擬主機、免備案服務器”等云主機租用服務以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務可用性高、性價比高”等特點與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應用場景需求。

新聞名稱:Linux系統(tǒng)Bash(Shell)基礎知識(2)-創(chuàng)新互聯(lián)
文章源于:http://muchs.cn/article0/higoo.html

成都網(wǎng)站建設公司_創(chuàng)新互聯(lián),為您提供定制開發(fā)、Google、商城網(wǎng)站、網(wǎng)站收錄、網(wǎng)站設計企業(yè)建站

廣告

聲明:本網(wǎng)站發(fā)布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經(jīng)允許不得轉載,或轉載時需注明來源: 創(chuàng)新互聯(lián)

成都網(wǎng)站建設