ทำไม 'เพื่อ anytext; ทำ 'วนรอบสี่ครั้งหรือไม่


9

นี่เป็นข้อบกพร่องหรือคุณสมบัติหรือไม่?
มันดูเหมือนว่าจะเกิดขึ้นสำหรับunquoted Alphanumerics

ใช้ GNU bash เวอร์ชั่น 4.1.5

for alpha01234; do echo $((++i)); done

เอาท์พุท:

1
2
3
4

คำตอบ:


14

นั่นคือคุณสมบัติของforคำสั่งผสมดังอธิบายโดยhelp for:

for: for NAME [in WORDS ... ] ; do COMMANDS; done

ดำเนินการคำสั่งสำหรับสมาชิกแต่ละคนในรายการ

การforวนรอบดำเนินการลำดับของคำสั่งสำหรับสมาชิกแต่ละคนในรายการของรายการ หากin WORDS ...;ไม่มีอยู่ก็in "$@"จะถือว่า สำหรับแต่ละองค์ประกอบในWORDS, NAMEถูกตั้งค่าเป็นองค์ประกอบที่และCOMMANDSจะดำเนินการ

ดังนั้นรหัสที่คุณยกมาน่าจะถูกเรียกใช้งานในสคริปต์ซึ่งถูกเรียกด้วยพารามิเตอร์ 4 ตัว


ขอบคุณ ... สิ่งที่ทำให้ฉันสมบูรณ์คือมันเกิดขึ้นที่บรรทัดคำสั่ง .. ที่จริงฉันไม่ได้ลองในสคริปต์ .. ฉันต้องใช้set a b c dในบางครั้งเมื่อเร็ว ๆ นี้ ฉันมักจะใช้setวิธีนั้นในสคริปต์สำหรับการทดสอบ .. หลังจากรีสตาร์ทเทอร์มินัลมันหยุด ... (เข้าท่าตอนนี้) ..
Peter.O

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.