1. 程式人生 > >Shell指令碼的echo命令用法

Shell指令碼的echo命令用法

在使用shell指令碼之前,我們是否應該先通俗的瞭解一下shell是什麼呢?shell可以理解為命令直譯器。我們知道,如果我們想要計算機去做一件事兒,就得告訴它。但是計算機核心不可能直接識別我們的命令,所以shell就是介於核心和使用者互動之間的中間層,接收使用者輸入的命令,解釋給核心執行。一般來說就像windows作業系統,你點選滑鼠可能就會完成一個操作,實際這些圖形下面就是shell了。該系統下的命令視窗的dos語言就是一種shell。常見得比如Linux和Unix系統裡面的bash,ksh,csh等。所謂的shell指令碼就是將很多的shell命令語句集合在一個檔案中,來完成一些較複雜的錯做。

      在Shell指令碼程式設計中,echo命令是用來輸出一些字串,用作提示。下面就簡單介紹下它的基本用法,以後有補充的再擴充。下面的圖片示例中,"#"是註釋符

基本的語法為:    echo  [-en]  String             #     -e 轉義反斜扛字元    -n 禁止換行

常用的幾種輸出格式:

1.顯示普通字串

例如: 

  echo "It is a test"  結果是: It is a test

       這個字串可以加雙引號也可以加單引號也可以不加,區別是:當使用單引號時,裡面是什麼就輸出什麼,即使有轉義字元也不識別。當使用雙引號時,可以識別轉義字元。如果不加引號,則將字串中的單個單詞作為字串輸出,各個字串之間用一個空格分割。

例如:

echo "\"It is a test\"" 結果是: "It is a test"

2.顯示至定向檔案

例如:

  echo "It is a test" > myfile    # >後面跟檔名

3.顯示(不)換行(圖片來源)

例如:

#!/bin/sh
echo -e "OK! \c"               # -e 開啟轉義 \c 不換行
echo "It is a test"
  echo -e "OK!\n"              # -e 開啟轉義  \n換行
  echo "It it a test"  

另外,echo常用的轉義字元如下:

引數 說明
              \a 鬧鈴             
              \b 退格(即刪除前一個字元)
              \c 強制換行
              \e 退出
              \f                    Formfeed(沒驗證還,不知道神馬意思回頭再改)     
              \n 換行
              \t 水平製表符
              \v 垂直製表符
              \\ 反斜扛                     
              \"  雙引號                           
             \nnn            插入nnn"八進位制"所代表的ASCII字元            

完整的ASCII碼對照表



Shell指令碼的執行過程(圖片來源)

shell的轉義符

字元 說明
‘’(單引號) 又叫硬轉義,其內部所有的shell 元字元、萬用字元都會被關掉。注意,硬轉義中不允許出現’(單引號)。
“”(雙引號) 又叫軟轉義,其內部只允許出現特定的shell 元字元:$用於引數代換 `用於命令代替
\(反斜槓)   又叫轉義,去除其後緊跟的元字元或萬用字元的特殊意義。
這些轉義符用在我們想讓萬用字元變為普通字元的時候使用。在有萬用字元和特殊字元的情況下,shell得到一條命令後如何執行的呢?

1

      如圖所示我們可以看到,雙引號經過引數擴充套件,命令列代換和算術代換後進入執行步驟,而單引號轉義字元直接進入執行步驟。兩個在shell檢測過程中跳過了不同數量的步驟。