อะไรคือความแตกต่างระหว่าง“ elif” และ“ else if” ในการสคริปต์เชลล์


5

ฉันยังใหม่กับการเขียนสคริปต์เชลล์

เมื่อฉันดูที่โค้ดเขียนสำหรับksh ( #!/bin/ksh) ฉันเห็นว่ามีelse ifทั้งที่elifใช้ในสคริปต์เดียว

ดังนั้นอะไรคือความแตกต่างระหว่างelse ifและelifในเชลล์สคริปต์?


2
บรรทัดแรกของสคริปต์พูดว่าอะไร บางสิ่งบางอย่างเช่น#!/bin/bash
พอล

มันบอกว่า #! / bin / ksh
Zeena Pinto

โปรดระบุเปลือกในคำถามของคุณและมีแท็ก มีเปลือกหอยจำนวนมากและพวกเขาทั้งหมดมีไวยากรณ์ที่แตกต่างกันเล็กน้อย (หรือรุนแรง)
ghoti

1
ฉันคิดว่าคุณจะต้องการแก้ไขและเพิ่มรหัสตัวอย่าง ksh รองรับif, elseและelif, แต่else ifเป็นเรื่องผิดปกติ
พอล

การทำรัง else ifเริ่มอีกระดับและมีความซับซ้อนมากขึ้น คุณต้องการหลีกเลี่ยงความซับซ้อน
Henk Langeveld

คำตอบ:


5

ฉันพยายามที่คำตอบในหนึ่งประโยค: ถ้าคุณใช้elifคุณจัดการกับหนึ่งถ้าข้อถ้าคุณใช้else ifกับสองถ้า-ข้อ

ดูตัวอย่างง่ายๆเหล่านี้:

testone() {
  if [[ $CASE == 1 ]]; then
    echo Case 1.
  elif [[ $CASE == 2 ]]; then
    echo Case 2.
  else 
    echo Unknown case.
  fi
}

นี่เป็นเรื่องเป็นทางการ (บางครั้งการเยื้องที่เป็นระเบียบทำให้เข้าใจได้) หนึ่งประโยคถ้าคุณสามารถดูได้ว่าแต่ละกรณีอยู่ในระดับลำดับชั้นเดียวกัน

ตอนนี้ฟังก์ชั่นเดียวกันกับelse if:

testtwo() {
  if [[ $CASE == 1 ]]; then
    echo Case 1.
  else
    if [[ $CASE == 2 ]]; then
      echo Case 2.
    else 
      echo Unknown case.
    fi
  fi
}

คุณมีคำสั่ง if-clauses สองประโยคอย่างเป็นทางการและตามด้วยfiคำสั่งปิดสองรายการ โปรดทราบว่ามันไม่ได้ทำให้ความแตกต่างที่นี่ถ้าฉันเขียนelse ifในหนึ่งบรรทัด (ตามคำถามของคุณ) หรือสองบรรทัด (เช่นในตัวอย่างของฉัน)

ฉันเดาว่าทำไมทั้งสองรูปแบบที่ใช้ในสคริปต์เดียวกัน: ถ้าคุณมีอยู่แล้วถ้าประโยคสมบูรณ์เขียน แต่ความต้องการ (เหตุผลตรรกะ) เพื่อคัดลอก / else ifตัดและวางที่เป็นที่มีอยู่ถ้าข้อคุณจะจบลงด้วย แต่เมื่อคุณเขียนเสร็จสมบูรณ์หากข้อจากรอยขีดข่วนคุณอาจใช้ IMHO elifง่ายต่อการอ่านรูปแบบ

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