首頁 > 軟體

Linux變數學習心得

2020-06-16 17:57:56

前一段時間學習了一下Linux的變數,現在總結有3點需要特別注意:

  1. Linux變數和C/C++變數的區別
  2. Linux變數的參照
  3. Linux變數特有的命令替換

  • 先說第一點,Linux變數更像是宏定義,只是可以變換指代內容。也就是說,在C/C++中,變數是只能賦值成不同型別的資料,例如int, char, ptr。但是在Linux中,變數是可以賦值成任意形式的內容,比如字串,針對這點來說,它更像是C/C++中的宏定義。
  • 由於變數包含的內容不同,Linux和C/C++的變數參照自然不同。Linux中變數參照一般有兩種形式:

    1. $var:這種寫法很常見而且簡單,但是為了準確的表達和降低閱讀難度,建議採用下一種方法;
    2. ${var}: 這種寫法更能體現出具體的變數,不會帶來意向不到的小麻煩。

    注意:在給變數賦值的時候有兩種寫法:

    1. 單引號‘’:單引號裡面的內容原封不動的賦值給變數,即使包含其他的變數;
    2. 雙引號“”:雙引號裡面的變數參照會換成變數的實際內容。
  • 關於變數的命令替換,格式是$(commend),本質是把commend執行的結果當成內容賦值給別的變數或是另作他用。

在這裡說一下關於命令替換的一些深入解析(個人見解):

    1. 命令替換和管道的關係:
      1. 對於管道來說,它是兩個命令(進程)間的關係,而且必須符合3個條件:
        • 前一個命令必須正確執行;
        • 前一個命令可以產生standard out的資訊;
        • 後一個命令可以接收資訊引數。
          然後才能完成前一個命令的結果傳遞給下一個命令的行為,而且只能是兩個命令之間的行為。
      2. 對於命令替換來說,它沒有這些條件的約束,只要命令執行,不管結果如何,都會將執行的結果取出賦值給別的變數或是另作他用。
    2. 命令替換和alias的關係:
      1. 對於alias來說,它可以作為一個命令的別名,其實就是另外一個名字而已,類似於typedef,它代表的是命令本身而不是它執行的結果;
      2. 對於命令替換來說,它得到的是命令執行的結果而不是命令本身。

本文永久更新連結地址http://www.linuxidc.com/Linux/2015-07/119553.htm


IT145.com E-mail:sddin#qq.com