การวิเคราะห์คำศัพท์สำหรับการมอบหมายในเชลล์ POSIX


-3

สำหรับการวิเคราะห์คำศัพท์ในเชลล์ POSIX จาก http://pubs.opengroup.org/onlinepubs/007904875/utilities/xcu_chap02.html

7. [การกำหนดชื่อคำสั่งก่อนหน้า]

[เมื่อคำแรก]

หากโทเค็นไม่มีอักขระ '=' กฎ 1 จะถูกนำไปใช้ มิฉะนั้นจะต้องใช้ 7b

ข [ไม่ใช่คำแรก]

หากโทเค็นมีอักขระ:

- ถ้ามันเริ่มต้นด้วย '=' โทเค็นคำจะถูกส่งกลับ

- หากตัวละครทั้งหมดที่อยู่ก่อนหน้า '=' เป็นชื่อที่ถูกต้อง (ดูที่ XBD มาตรา 3.231) โทเค็น ASSIGNMENT_WORD จะถูกส่งกลับ (อักขระที่ยกมาไม่สามารถมีส่วนร่วมในการสร้างชื่อที่ถูกต้อง)

- ไม่เช่นนั้นจะไม่ระบุว่าเป็น ASSIGNMENT_WORD หรือ WORD ที่ส่งคืน การมอบหมายให้ NAME จะเกิดขึ้นตามที่ระบุไว้ในส่วน 2.9.1

  1. 'คำแรก' หมายถึงอะไร?

    กรณีใดคือ 'เมื่อคำแรก'

    กรณีใด 'ไม่ใช่คำแรก'

  2. 'เมื่อคำแรก' กรณีใดคือ 'หากโทเค็นไม่มีอักขระ' = ''
  3. เมื่อ 'ไม่ใช่คำแรก'

    • กรณีใด 'ถ้าเริ่มต้นด้วย' = ''

    • กรณีใด 'มิฉะนั้น'


2
ฉันงงกับ downvotes ที่เงียบ กฎไวยากรณ์อย่างเป็นทางการนั้นยากที่จะเข้าใจและ POSIX อยู่ในหัวข้อที่นี่
jlliagre

คำตอบ:


2
  1. 'คำแรก' หมายถึงอะไร?

โทเค็นแรกที่ไม่ใช่ตัวถูกดำเนินการ

กรณีใดคือ 'เมื่อคำแรก'

เมื่อโทเค็นแรกที่ไม่ใช่ตัวถูกดำเนินการจะถูกวิเคราะห์

กรณีใด 'ไม่ใช่คำแรก'

กรณีนี้ใช้เพื่ออนุญาตการประมวลผลการมอบหมายหลายรายการที่อยู่ในบรรทัดเดียวกัน

  1. 'เมื่อคำแรก' กรณีใดคือ 'หากโทเค็นไม่มีอักขระ' = ''

เมื่อโทเค็นแรกที่ไม่ใช่ตัวถูกดำเนินการไม่มี=สัญญาณนี่ไม่ใช่การกำหนดดังนั้นมันจะถูกประมวลผลเป็นชื่อคำสั่ง (กฎ 1)

  1. เมื่อ 'ไม่ใช่คำแรก'

    • กรณีใด 'ถ้าเริ่มต้นด้วย' = ''

นั่นจะเป็นสิ่งที่ชอบ:

=123
  • กรณีใด 'มิฉะนั้น'

มีสอง 'อย่างอื่น' คนแรกจะเป็นสิ่งที่ชอบ:

invalid%variable+name=123

'อื่น' ที่สองครอบคลุมกรณีที่คำที่ไม่ใช่คำแรกไม่มีการกำหนด

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