สคริปต์ทุบตีที่มี
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)
ต่อท้ายมัน v
v+=(b-1 b-2)
=
นี้เป็นอย่างน้อยให้สอดคล้องกับความจริงที่ว่าคุณจะไม่สามารถทำให้ตัวแปรอาร์เรย์ด้วยง่าย ตัวอย่างเช่นv=a-1 a-2
จะไม่ทำงาน