像 Linux 這樣的基于 GNU 的操作系統依賴于一個名為 Bash 的命令語言解釋器或 Shell 來完成它們的大部分計算任務和目標。 BBash 是 Bourne Again Shell 的縮寫,Bunne Again Shell 是一個雙關的名稱,是對 Bourne Shell (即 Steven Bourne 發明)的致敬。在兼容性方面,Bash 和 sh 是絕配。C shell ( csh ) 和Korn shell ( ksh ) 中明顯的有用特性也包含在這個 shell 語言解釋器中。 在實現方面,Bash 旨在符合 IEEE POSIX 規范(IEEE 標準 1003.1)工具部分和 IEEE POSIX Shell。因此,作為一種交互式和編程工具,Bash 提供的功能改進勝過 sh 中的改進。 Linux 和其他基于 GNU 的操作系統的用戶不必僅僅依賴Bash作為他們的主要命令語言解釋器,因為像 csh 這樣的 shell 版本也預先打包在這些系統中。由于其獨特的 shell 屬性(如可移植性),Bash 僅配置為用作默認 Linux shell。
在 Bash 中比較 $() 與 ${}
為了比較與 Bash 環境相關的這兩個屬性,我們必須重申$()to$(command)和${}to${parameter}。因此,我們可以嘗試定義這兩個 Bash 實體。
理解 $(命令)
$(command)在Bash中涉及命令替換。更具體地說,命令部分 in$(command)被執行,其輸出被捕獲并打印在標準輸出上。 背后的語法$(command)是令牌級別的。考慮執行以下命令,該命令旨在在終端上打印出當前日期。
echo "今天是 $(date). LinuxMi.com 又是美好的一天。"
在 Linux 中打印日期
上述執行可以用以下方式解釋。首先,執行 date 命令并將其輸出作為參數包含在 echo 命令中。 在這里,我們可以假設命令替換在重新包含在主 shell 之前在單獨的子 shell 中執行。
了解 ${parameter}
${parameter}在Bash中涉及參數替換。根據 Bash 手冊頁,參數是一個值存儲實體。參數實體可以與名稱、數字或特殊字符相關聯。 大括號{}暗示我們在處理位置參數,或者在使用的參數(參數值)后面是一個與參數名稱不相關的非解釋性字符,例如${animal}s。 至于位置參數,可以用一個或多個數字來表示(單個數字 0 除外)。因此,如果我們有一個名為$variable_name的變量,則可以使用參數 替換${parameter}來檢索關聯的變量值。 考慮以下變量聲明命令:
$ animal=lion
讓我們調用 animal 變量以嘗試將變量值復數:
$ echo $animals
在命令中聲明變量 在標準輸出中不會打印任何內容,因為 Bash 不理解變量 $animals。但是,我們可以通過如下方式使用參數替換方法成功調用我們的$animals 變量:
$ echo ${animal}s
在命令中調用變量 在某些情況下,感嘆號可能會在參數替換實現的第一個左大括號之后出現。在這種情況下,就會出現變量間接的概念。 變量值優先于參數值,如下所示:
$ animal=lion $ echo $animal$ lion=rafiki$ echo $lion$ echo ${!animal}
參數值的優先級 希望本文能夠說明 Bash 中$()和${}之間的區別。 如果還有什么疑問與建議,請在下面的評論框里給我們留言。
-
Linux
+關注
關注
87文章
11292瀏覽量
209328 -
終端
+關注
關注
1文章
1128瀏覽量
29864 -
解釋器
+關注
關注
0文章
103瀏覽量
6509
原文標題:Bash 中的 ${} 和 $() 有什么區別
文章出處:【微信號:良許Linux,微信公眾號:良許Linux】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論