การใช้ parens ทำให้คำสั่งในเชลล์ย่อยซึ่งไม่ใช่สิ่งที่คุณต้องการ หรือใช้วงเล็บปีกกา:
command && echo "Ok, continuing" || { echo "Check internet connection"; exit 1; }
เคล็ดลับที่นี่คือว่าไม่เหมือน parens ;คำสั่งสุดท้ายในการจัดฟันจะต้องตามด้วย
เหตุใดจึงต้องใช้เครื่องหมายอัฒภาคหรือขึ้นบรรทัดใหม่
วงเล็บปีกกาเป็นอาร์กิวเมนต์ที่ถูกต้องสำหรับคำสั่ง ตัวอย่างเช่นนี่คือเครื่องหมายปีกกาแบบหยิกเป็นอาร์กิวเมนต์เพื่อecho:
$ echo }
}
ดังนั้นถ้าเชลล์เห็น:
{ command1; command2 }
ตีความเปลือก Command1 ว่ามีการขัดแย้งใดและ Command2 }ว่ามีหนึ่งอาร์กิวเมนต์ประกอบด้วยตัวอักษร วงเล็บปีกกา}จะถูกตีความว่าเป็นการปิดการจัดกลุ่มเท่านั้นหากเป็นไปตามเซมิโคลอนหรือขึ้นบรรทัดใหม่ หากต้องการทำงานด้านบน:
{ command1; command2; }
Subshells และความแตกต่างระหว่าง{...}และ(...)
สังเกตว่าค่าต่อไปนี้ตั้งค่าxเป็น 10 แต่การตั้งค่านั้นถูกลืมก่อนที่echoคำสั่งจะทำงาน:
$ x=0; false || ( echo Hello; x=10 )
Hello
$ echo $x
0
ด้วยการจัดฟันแบบเส้นตรงในทางตรงกันข้ามการตั้งค่าของx=10จะถูกจดจำ:
$ x=0; false || { echo Hello; x=10; }
Hello
$ echo $x
10
ความแตกต่างเป็นเพราะการกำหนดตัวแปรใน subshell ไม่รอดหลังจากที่ subshell เสร็จสมบูรณ์
เอกสาร
จากman bash:
  (รายการ)
  
  รายการจะถูกดำเนินการในสภาพแวดล้อม subshell (ดูคำสั่งการดำเนินการด้านสิ่งแวดล้อมด้านล่าง) การกำหนดตัวแปรและคำสั่ง builtin ที่ส่งผลกระทบต่อสภาพแวดล้อมของเชลล์จะไม่มีผลบังคับใช้หลังจากคำสั่งเสร็จสิ้น สถานะการส่งคืนคือสถานะการออกของรายการ
  
  {รายการ; }
  
  รายการจะถูกดำเนินการอย่างง่ายในสภาพแวดล้อมเชลล์ปัจจุบัน  รายการจะต้องถูกยกเลิกด้วยการขึ้นบรรทัดใหม่หรืออัฒภาค   สิ่งนี้เรียกว่าคำสั่งกลุ่ม สถานะการส่งคืนคือสถานะการออกของรายการ โปรดทราบว่าแตกต่างจาก metacharacters (และ), {และ} เป็นคำสงวนและจะต้องเกิดขึ้นเมื่อคำที่สงวนไว้ได้รับอนุญาตให้รับรู้ เนื่องจากไม่ทำให้เกิดการแบ่งคำจึงต้องแยกออกจากรายการด้วยช่องว่างหรือเชลล์ตัวอักขระอื่น
  
  [เน้นเพิ่ม]
               
              
(){}