2021-05-12 14:32:11
Linux變數學習心得
2020-06-16 17:57:56
前一段時間學習了一下Linux的變數,現在總結有3點需要特別注意:
- Linux變數和C/C++變數的區別
- Linux變數的參照
- Linux變數特有的命令替換
- 先說第一點,Linux變數更像是宏定義,只是可以變換指代內容。也就是說,在C/C++中,變數是只能賦值成不同型別的資料,例如int, char, ptr。但是在Linux中,變數是可以賦值成任意形式的內容,比如字串,針對這點來說,它更像是C/C++中的宏定義。
-
由於變數包含的內容不同,Linux和C/C++的變數參照自然不同。Linux中變數參照一般有兩種形式:
- $var:這種寫法很常見而且簡單,但是為了準確的表達和降低閱讀難度,建議採用下一種方法;
- ${var}: 這種寫法更能體現出具體的變數,不會帶來意向不到的小麻煩。
注意:在給變數賦值的時候有兩種寫法:
- 單引號‘’:單引號裡面的內容原封不動的賦值給變數,即使包含其他的變數;
- 雙引號“”:雙引號裡面的變數參照會換成變數的實際內容。
- 關於變數的命令替換,格式是$(commend),本質是把commend執行的結果當成內容賦值給別的變數或是另作他用。
在這裡說一下關於命令替換的一些深入解析(個人見解):
- 命令替換和管道的關係:
- 對於管道來說,它是兩個命令(進程)間的關係,而且必須符合3個條件:
- 前一個命令必須正確執行;
- 前一個命令可以產生standard out的資訊;
- 後一個命令可以接收資訊引數。
然後才能完成前一個命令的結果傳遞給下一個命令的行為,而且只能是兩個命令之間的行為。
- 對於命令替換來說,它沒有這些條件的約束,只要命令執行,不管結果如何,都會將執行的結果取出賦值給別的變數或是另作他用。
- 對於管道來說,它是兩個命令(進程)間的關係,而且必須符合3個條件:
- 命令替換和alias的關係:
- 對於alias來說,它可以作為一個命令的別名,其實就是另外一個名字而已,類似於typedef,它代表的是命令本身而不是它執行的結果;
- 對於命令替換來說,它得到的是命令執行的結果而不是命令本身。
本文永久更新連結地址:http://www.linuxidc.com/Linux/2015-07/119553.htm
相關文章