สคริปต์ทุบตีที่มี
for i in {a,b}-{1,2}; do
echo $i;
done
พิมพ์
a-1
a-2
b-1
b-2
เมื่อดำเนินการ นี่คือสิ่งที่ฉันคาดไว้ - ขณะที่การ{a,b}ก่อสร้างขยายออกไป
อย่างไรก็ตามเมื่อสคริปต์ (อื่น) มี
v={a,b}-{1,2}
echo $v
มันพิมพ์
{a,b}-{1,2}
ซึ่งไม่ใช่สิ่งที่ฉันคาดหวัง a-1 a-2 b-1 b-2ผมคาดว่ามันจะพิมพ์ เห็นได้ชัดว่าการ{a,b}สร้างไม่ได้ขยาย
ฉันสามารถทำให้มันขยายได้อย่างนั้น
v=$(echo {a,b}-{1,2})
จากข้อสังเกตเหล่านี้ฉันมีสองคำถาม: 1) {a,b}โครงสร้างจะขยายเมื่อไหร่? 2) เป็น$(echo {a,b}-{1,2})วิธีที่ต้องการเพื่อกระตุ้นการขยายเมื่อต้องการหรือไม่
v=a-1 a-2วิธีการกำหนดอาร์เรย์ให้กับตัวแปร assign 'a-1' to variable v and run 'a-2' v=(a-1 a-2) ต่อท้ายมัน vv+=(b-1 b-2)
=นี้เป็นอย่างน้อยให้สอดคล้องกับความจริงที่ว่าคุณจะไม่สามารถทำให้ตัวแปรอาร์เรย์ด้วยง่าย ตัวอย่างเช่นv=a-1 a-2จะไม่ทำงาน