簡體   English   中英

bash 中的 ( ... ) 和 { ... } 有什么區別

[英]What is the difference between ( ... ) and { ... } in bash

在 bash 中,選擇使用( ... ){ ... }之間有什么區別,就像在我的測試用例中一樣,這兩種產品的預期結果相同:

# using round brackets
(
    echo 'hello'
    echo 'world'
) | rev
# using squiggly brackets
{
    echo 'hello'
    echo 'world'
} | rev
# result:
olleh
dlrow

也許這個測試用例在它們相同的情況下,但是我會選擇一種語法而不是另一種語法的因素是什么?

選擇使用 ( ... ) 或 { ... }

是的,一個產生一個子shell,另一個在當前執行環境中執行命令。

但是,我會選擇一種語法而不是另一種語法的因素是什么?

當然 - 當您想要生成子外殼時使用()

在bash中,這兩個代碼塊有什么區別:

(我認為,但我不是 100% 確定)不。 管道的左側在子外殼中生成。 然后 Bash 檢測到(...)是左側的一個唯一表達式,因此 Bash 進行優化並且不產生子shell 並且只執行第二個命令列表的內容並且不產生第二個子shell,所以兩者都應該導致產生完全相同的“子殼數”。 這是一種“優化”,同樣的方式( ( ( ( ( ( echo ) ) ) ) ) )可以只是一個子shell。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM