程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> MYSQL數據庫 >> 關於MYSQL數據庫 >> Bash命令行處理[詳解]

Bash命令行處理[詳解]

編輯:關於MYSQL數據庫
 我看很多兄弟寫腳本或命令時出現錯誤的主要原因,是因為不了解bash的命令行處理。我在這裡總結了一下,大家可以參考一下。其中也涉及到雙引號,單引號以及eval的技巧,我會一一講述。

我看很多兄弟寫腳本或命令時出現錯誤的主要原因,是因為不了解bash的命令行處理。我在這裡總結了一下,大家可以參考一下。其中也涉及到雙引號,單引號以及eval的技巧,我會一一講述。

代碼:

                               +-------------+           單引號



    |-----------------------|             |--------------------------|



    |  ---------------------| 1.分隔成記號|---- ---------------|     |



    |  |   -----------------|             |      雙引號        |     |



    |  |   |                   +-------------+                    |     |



    |  |   |                          ||                          |     |



    |  |   |讀取下一個命令            \/                          |     |



    |  |   |     +-------------------------------------------+    |     |



    |  |   |     |                    2.                     |    |     |



    |  |   ------|              檢驗第一個記號               |    |     |



    |  |         |開放的關鍵字                    其他關鍵字 |    |     |



    |  |         |               非關鍵字                    |    |     |



    |  |         +-------------------------------------------+    |     |



    |  |                              ||                          |     |



    |  |                              \/                          |     |



    |  |            +-----------------------------+               |     |



    |  |  擴展別名  |           3. 檢驗第一個記號 |               |     |



    |  |------------|  別名                       |               |     |



    |               |              不是別名       |               |     |



    |               +-----------------------------+               |     |



    |                                 ||                          |     |



    |                                 \/                          |     |



    |                           +--------------+                  |     |



    |                           | 4.大括號擴展 |                  |     |



    |                           +--------------+                  |     |



   

歡迎光臨學網,收藏本篇文章 [1] [2] [3] [4] [5]

$False$

| || | | | \/ | | | +--------------+ | | | | 5.~符號擴展 | | | | +--------------+ | | | || | | | \/ | | | +--------------+ 雙引號 | | | | 6.參數擴展 |<-----------------| | | +--------------+ | | || | | \/ | | +------------------------------+ | | | 7.命令替換(嵌套命令行處理) | | | +------------------------------+ | | || | | \/ | | +--------------+ 雙引號 | | | 8.算術擴展 |------------------| | | +--------------+ | | | || | | | \/ | | | +--------------+ | | |


您正在看的MySQL教程是:Bash命令行處理[詳解]。 | 9.單詞分割 | | | | +--------------+ | | | || | | | \/ | | | +--------------+ | | | | 10.路徑名擴展| | | | 文章整理:學網 http://www.xue5.com (本站) [1] [2] [3] [4] [5]

+--------------+ | | | || | | | \/ | | | +----------------------------------------+ | | | | 11.命令查尋:函數,內置命令,可執行文件|<---|-----| | +----------------------------------------+ | || | \/ |將參數帶入下一個命令 +-------------+ |----------eval--------------| 12.運行命令 | +-------------+


Shell從標准輸入或腳本中讀取的每行稱為一個管道行,它包含一個或多個由0個或多個管道字符(|)分隔的命令。對每一個管道行,進行12個步驟的處理。
結合上面的插圖,這裡給出命令行的12個步驟。

1. 將命令行分成由固定元字符集分隔的記號:
SPACE, TAB, NEWLINE, ; , (, ), <, >, |, &
記號類型包括單詞,關鍵字,I/O重定向符和分號。

2.檢測每個命令的第一個記號,查看是否為不帶引號或反斜線的關鍵字。如果是一個開放的關鍵字,如if和其他控制結構起始字符串,function,{或(,則命令實際上為一復合命令。shell在內部對復合命令進行處理,讀取下一個命令,並重復這一過程。如果關鍵字不是復合命令起始字符串(如then等一個控制結構中間出現的關鍵字),則給出語法錯誤信號。

3.依據別名列表檢查每個命令的第一個關鍵字。如果找到相應匹配,則替換其別名定義,並退回第一步;否則進入第4步。該策略允許遞歸別名,還允許定義關鍵字別名。如alias procedure=function

4.執行大括號擴展,例如a變成ab ac

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved