นี่เป็นข้อบกพร่องหรือคุณสมบัติหรือไม่?
มันดูเหมือนว่าจะเกิดขึ้นสำหรับunquoted Alphanumerics
ใช้ GNU bash เวอร์ชั่น 4.1.5
for alpha01234; do echo $((++i)); done
เอาท์พุท:
1
2
3
4
นี่เป็นข้อบกพร่องหรือคุณสมบัติหรือไม่?
มันดูเหมือนว่าจะเกิดขึ้นสำหรับunquoted Alphanumerics
ใช้ GNU bash เวอร์ชั่น 4.1.5
for alpha01234; do echo $((++i)); done
เอาท์พุท:
1
2
3
4
คำตอบ:
นั่นคือคุณสมบัติของfor
คำสั่งผสมดังอธิบายโดยhelp for
:
for: for NAME [in WORDS ... ] ; do COMMANDS; done
ดำเนินการคำสั่งสำหรับสมาชิกแต่ละคนในรายการ
การ
for
วนรอบดำเนินการลำดับของคำสั่งสำหรับสมาชิกแต่ละคนในรายการของรายการ หากin WORDS ...;
ไม่มีอยู่ก็in "$@"
จะถือว่า สำหรับแต่ละองค์ประกอบในWORDS
,NAME
ถูกตั้งค่าเป็นองค์ประกอบที่และCOMMANDS
จะดำเนินการ
ดังนั้นรหัสที่คุณยกมาน่าจะถูกเรียกใช้งานในสคริปต์ซึ่งถูกเรียกด้วยพารามิเตอร์ 4 ตัว
for x; do …
เป็นทางลัดสำหรับfor x in "$@"; do …
: มันวนซ้ำพารามิเตอร์ตำแหน่ง หากลูปสี่ครั้งหมายความว่าคุณมีพารามิเตอร์ตำแหน่งสี่ค่า ( $1
ผ่าน$4
)
set a b c d
ในบางครั้งเมื่อเร็ว ๆ นี้ ฉันมักจะใช้set
วิธีนั้นในสคริปต์สำหรับการทดสอบ .. หลังจากรีสตาร์ทเทอร์มินัลมันหยุด ... (เข้าท่าตอนนี้) ..