0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

在 Bash 中比較 $() 與 ${}

lhl545545 ? 來源:Linux迷 ? 作者:Linux迷 ? 2022-09-09 09:24 ? 次閱讀

Linux 這樣的基于 GNU 的操作系統(tǒng)依賴于一個名為 Bash 的命令語言解釋器或 Shell 來完成它們的大部分計(jì)算任務(wù)和目標(biāo)。 BBash 是 Bourne Again Shell 的縮寫,Bunne Again Shell 是一個雙關(guān)的名稱,是對 Bourne Shell (即 Steven Bourne 發(fā)明)的致敬。在兼容性方面,Bash 和 sh 是絕配。C shell ( csh ) 和Korn shell ( ksh ) 中明顯的有用特性也包含在這個 shell 語言解釋器中。 在實(shí)現(xiàn)方面,Bash 旨在符合 IEEE POSIX 規(guī)范(IEEE 標(biāo)準(zhǔn) 1003.1)工具部分和 IEEE POSIX Shell。因此,作為一種交互式和編程工具,Bash 提供的功能改進(jìn)勝過 sh 中的改進(jìn)。 Linux 和其他基于 GNU 的操作系統(tǒng)的用戶不必僅僅依賴Bash作為他們的主要命令語言解釋器,因?yàn)橄?csh 這樣的 shell 版本也預(yù)先打包在這些系統(tǒng)中。由于其獨(dú)特的 shell 屬性(如可移植性),Bash 僅配置為用作默認(rèn) Linux shell。

在 Bash 中比較 $() 與 ${}

為了比較與 Bash 環(huán)境相關(guān)的這兩個屬性,我們必須重申$()to$(command)和${}to${parameter}。因此,我們可以嘗試定義這兩個 Bash 實(shí)體。

理解 $(命令)

$(command)在Bash中涉及命令替換。更具體地說,命令部分 in$(command)被執(zhí)行,其輸出被捕獲并打印在標(biāo)準(zhǔn)輸出上。 背后的語法$(command)是令牌級別的??紤]執(zhí)行以下命令,該命令旨在在終端上打印出當(dāng)前日期。


echo "今天是 $(date). LinuxMi.com 又是美好的一天。"

a1bd470c-2fcf-11ed-ba43-dac502259ad0.png

在 Linux 中打印日期

上述執(zhí)行可以用以下方式解釋。首先,執(zhí)行 date 命令并將其輸出作為參數(shù)包含在 echo 命令中。 在這里,我們可以假設(shè)命令替換在重新包含在主 shell 之前在單獨(dú)的子 shell 中執(zhí)行。

了解 ${parameter}

${parameter}在Bash中涉及參數(shù)替換。根據(jù) Bash 手冊頁,參數(shù)是一個值存儲實(shí)體。參數(shù)實(shí)體可以與名稱、數(shù)字或特殊字符相關(guān)聯(lián)。 大括號{}暗示我們在處理位置參數(shù),或者在使用的參數(shù)(參數(shù)值)后面是一個與參數(shù)名稱不相關(guān)的非解釋性字符,例如${animal}s。 至于位置參數(shù),可以用一個或多個數(shù)字來表示(單個數(shù)字 0 除外)。因此,如果我們有一個名為$variable_name的變量,則可以使用參數(shù) 替換${parameter}來檢索關(guān)聯(lián)的變量值。 考慮以下變量聲明命令:


$ animal=lion

讓我們調(diào)用 animal 變量以嘗試將變量值復(fù)數(shù):


$ echo $animals

a1d9ad20-2fcf-11ed-ba43-dac502259ad0.png在命令中聲明變量 在標(biāo)準(zhǔn)輸出中不會打印任何內(nèi)容,因?yàn)?Bash 不理解變量 $animals。但是,我們可以通過如下方式使用參數(shù)替換方法成功調(diào)用我們的$animals 變量:


$ echo ${animal}s

a1e70e0c-2fcf-11ed-ba43-dac502259ad0.png在命令中調(diào)用變量 在某些情況下,感嘆號可能會在參數(shù)替換實(shí)現(xiàn)的第一個左大括號之后出現(xiàn)。在這種情況下,就會出現(xiàn)變量間接的概念。 變量值優(yōu)先于參數(shù)值,如下所示:


$ animal=lion $ echo $animal$ lion=rafiki$ echo $lion$ echo ${!animal}

a1f55a20-2fcf-11ed-ba43-dac502259ad0.png
參數(shù)值的優(yōu)先級 希望本文能夠說明 Bash 中$()和${}之間的區(qū)別。 如果還有什么疑問與建議,請?jiān)谙旅娴脑u論框里給我們留言。

審核編輯:彭靜
聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • Linux
    +關(guān)注

    關(guān)注

    87

    文章

    11171

    瀏覽量

    208474
  • 終端
    +關(guān)注

    關(guān)注

    1

    文章

    1101

    瀏覽量

    29776
  • 解釋器
    +關(guān)注

    關(guān)注

    0

    文章

    103

    瀏覽量

    6479

原文標(biāo)題:Bash 中的 ${} 和 $() 有什么區(qū)別

文章出處:【微信號:良許Linux,微信公眾號:良許Linux】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏

    評論

    相關(guān)推薦

    詳解Linux Bash命令

    Bash 是一種相當(dāng)強(qiáng)大的編程語言,而且也很容易上手。
    發(fā)表于 08-15 09:12 ?1574次閱讀

    開發(fā)人員必須具備的Bash腳本知識

    您可以使用 Bash 腳本自動執(zhí)行各種任務(wù)。掌握基礎(chǔ)知識并開始您的 Bash 腳本之旅。
    發(fā)表于 09-27 09:09 ?403次閱讀

    如何在bash shell腳本中使用變量

    如果你使用編程語言編寫過程序,那么一定接觸過變量。而在 bash 腳本的編寫時,變量也是一個很重要的概念。今天我們分享一下如何在 bash 腳本中使用變量。
    發(fā)表于 12-02 16:32 ?1967次閱讀
    如何在<b class='flag-5'>bash</b> shell腳本中使用變量

    請問AD17的PCB文件怎么PADS中比較完整的打開?

    請問AD17的PCB文件 怎么才能在pads中比較完整的打開? 謝謝~
    發(fā)表于 03-19 01:31

    Linux之bash的主要介紹

    Again SHell(bash) - C SHell(csh) - KornSHell(ksh) - zsh各個shell的功能都差不太多,某些語法的下達(dá)下面有些區(qū)別,Linux預(yù)設(shè)就是bash。這里主要介紹
    發(fā)表于 07-11 06:53

    AI算法中比較常用的模型都有什么?

    AI算法中比較常用的模型都有什么
    發(fā)表于 08-27 09:19

    Delphi中比較GUID是否相等

    Delphi中比較GUID是否相等,CompareMem(@guid1, @guid2, SizeOf(TGUID)),最開始時想到的方法
    發(fā)表于 06-22 10:11 ?1667次閱讀

    高級Bash 腳本編程指南

    高級Bash 腳本編程指南
    發(fā)表于 10-26 08:33 ?7次下載
    高級<b class='flag-5'>Bash</b> 腳本編程指南

    目前深度學(xué)習(xí)中比較普及的“物件檢測”應(yīng)用

    接下來的重點(diǎn),就是目前深度學(xué)習(xí)中比較普及的“物件檢測”應(yīng)用,重點(diǎn)主要有以下三部分: 1. 簡單說明“物件檢測”的內(nèi)容。 2. 使用本項(xiàng)目的 detecnet 物件分類指令,進(jìn)行多樣化的推理識別測試
    的頭像 發(fā)表于 06-09 15:46 ?1800次閱讀
    <b class='flag-5'>在</b>目前深度學(xué)習(xí)<b class='flag-5'>中比較</b>普及的“物件檢測”應(yīng)用

    bash手冊

    本文簡要介紹了bashshell(版本:5.12020年12月21日)。這是GNU Bash參考手冊第5.1版,最后一次更新于2020年12月21日,對于Bash,版本5.1。
    發(fā)表于 08-04 17:45 ?3次下載

    bash中如何創(chuàng)建函數(shù)

    當(dāng)你的 bash 腳本中代碼非常多的時候,會看起來很混亂,其中有部分代碼有可能是重復(fù)的。這個時候,可以使用函數(shù)來避免重復(fù)的代碼。
    的頭像 發(fā)表于 12-14 17:31 ?1115次閱讀

    Bash腳本中特殊變量$0是什么?

    Bash 腳本中,`$0` 是一個特殊變量,它代表當(dāng)前腳本的路徑和名稱。這個變量用于表示腳本自身,它是 Bash 環(huán)境中的一個重要組成部分。`$0` 變量是一個只讀變量,無法更改。
    的頭像 發(fā)表于 05-12 14:41 ?1785次閱讀

    bash中如何進(jìn)行各種文件重定向呢?

    本文會用以下測試程序,來演示bash中,如何進(jìn)行各種文件重定向
    的頭像 發(fā)表于 08-25 09:31 ?1123次閱讀
    <b class='flag-5'>在</b><b class='flag-5'>bash</b>中如何進(jìn)行各種文件重定向呢?

    BASH shell腳本篇—函數(shù)

    函數(shù)是代碼重用的最重要方式。Bash函數(shù)可以定義為一組命令,bash腳本中多次調(diào)用。
    的頭像 發(fā)表于 10-20 16:31 ?835次閱讀

    BASH shell腳本篇—文件處理介紹

    Bash Shell腳本中,可以使用多種方法來對文件進(jìn)行操作,包括讀取文件或?qū)懭胛募?/div>
    的頭像 發(fā)表于 10-23 16:51 ?531次閱讀