[英]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.