ฉันเรียนรู้วิธีการเขียนโค้ดเป็นCภาษาแรกและการใช้งาน
if ( code )
then
code
fi
ทำให้มันยากสำหรับฉันที่จะอ่านโค้ดของฉัน (อย่าถามว่าทำไม) มีสิ่งทดแทนthenหรือไม่?
บางสิ่งเช่นนี้
if ( code ) {
code
}
fi
ฉันเรียนรู้วิธีการเขียนโค้ดเป็นCภาษาแรกและการใช้งาน
if ( code )
then
code
fi
ทำให้มันยากสำหรับฉันที่จะอ่านโค้ดของฉัน (อย่าถามว่าทำไม) มีสิ่งทดแทนthenหรือไม่?
บางสิ่งเช่นนี้
if ( code ) {
code
}
fi
คำตอบ:
ไม่มีสิ่งใดทดแทน แต่คุณสามารถใช้ทั้งคู่ได้หากคุณต้องการเครื่องมือจัดฟัน:
if true ; then {
something
} fi
ที่ใช้กลุ่มคำสั่งที่ไม่จำเป็นซึ่งมีการค้ำยันอย่างชัดเจนเป็นเนื้อความของthenบล็อก คำสั่งใด ๆ ในการจัดฟันจะถูกดำเนินการในเปลือกปัจจุบันเมื่อการthenทำงานเหมือนกับว่าการจัดฟันไม่ได้มี
ฉันจะไม่แนะนำสไตล์นี้โดยทั่วไปหรือสำหรับรหัสที่คนอื่นจะต้องอ่าน แต่มันจะให้คุณจัดฟันที่คุณต้องการและมันจะทำเคล็ดลับถ้าคุณกำลังใช้โปรแกรมแก้ไขที่ต้องใช้บล็อกที่มีวงเล็บหรือ อะไรแบบนั้น.
{ if { [[ a == aa ]];};then { echo yes;};else { echo no;}; fi;}- โดยทั่วไปเมื่อคุณใช้bashเพียงพอ ไวยากรณ์มาตรฐานจะคุ้นเคยพอดังนั้นมันจึงไม่เป็นปัญหามากนัก
ดูเหมือนว่าคุณจะมองหาเปลือก C ( csh, tcshฯลฯ ... ) โปรดทราบว่าผู้เชี่ยวชาญแนะนำให้กับมันสำหรับการเขียนโปรแกรม
ฉันไม่แน่ใจว่าส่วนที่คุณคิดว่าน่าสนใจหรือไม่นั้นเป็นความจริงที่thenอยู่ในบรรทัดต่อไปนี้หรือไม่? หากเป็นเช่นนั้นให้พิจารณาใช้รูปแบบต่อไปนี้:
if condition; then
stuff
fi
ฉันต้องยอมรับว่าชื่อคำสั่งการสะกดถอยหลังเช่นfiสำหรับifและesacสำหรับcase( แต่ไม่ใช่elihwสำหรับwhile!) เป็นชนิดของการเล่นโวหาร แต่นั่นเป็นบอร์นเชลล์มาตรฐานซึ่งเป็นไวยากรณ์เชลล์แบบพกพาที่สุดที่คุณสามารถใช้ได้
thenไม่สวยก็เพียงว่าบรรณาธิการของฉันจะเน้นที่สอดคล้องกัน{}คู่และที่มีประโยชน์สำหรับเมื่อฉันมีการเรียงลำดับของความผิดพลาดบางอย่างแล้วเพราะผมสามารถมองเห็นทั้งหมดของฉันifงบและดูว่าสิ่งที่ผิดพลาด .
viของ%คำสั่งซึ่งกระโดดไปรั้งที่ตรงกัน / วงเล็บ / วงเล็บ ฉันเห็นอกเห็นใจ ฉันคิดถึงvi's %คำสั่งเมื่อการเขียนโปรแกรมในหลาม
บางทีนี่อาจจะง่ายขึ้นในสายตา:
[ condition ] && {
# statement 1
# statment 2
# ...
}
นอกเหนือจากนั้นเพียงรับใช้มัน ใช้สำนวนภาษา
ต่อไปนี้อยู่ใกล้กับที่นั่น และแปลก
: if; { code; } && {
code
}
โดยส่วนตัวฉันไม่ชอบ ...
if true; then
more;fi
... สร้างตัวเอง ผมชอบมันเมื่อคำควบคุมนำไปสู่ มันดูแปลกสำหรับฉันเสมอที่...;thenแบบฟอร์มที่ปรากฏขึ้นมาเลย
if this && that
then do these things too
else i will probably get upset
fi
มันเกือบจะตรงกันข้ามกับคำขอของคุณทั้งหมด แต่เป็นอีกวิธีหนึ่งที่จะทำ นอกจากนี้คุณยังสามารถเปลี่ยนเส้นทางที่ต้องการไปยังfiบรรทัดได้ตามต้องการและจะนำไปใช้กับบล็อกทั้งหมด
if(...) {นั่นคือการเปิดวงเล็บปีกกาในบรรทัดเดียวกับifภาษา C-like
ifคำสั่งแม้ว่าในบรรทัดถัดไป
;delim ในกรณีนั้น นั่นเป็นเหตุผลที่พวกเขาทำ
:เชลล์บิวด์อินแบบนี้เพียงเพื่อให้บรรทัดของโค้ดสามารถอยู่ใกล้กับไวยากรณ์ C มากขึ้นไม่ควรสนับสนุนในลักษณะใด ๆ
นี่คือวิธี:
[ "$var" = "find" ] && echo "found"
เทียบเท่ากับ:
if [ "$var" = "find" ]; then
echo "found"
fi
{...}ไปรอบ ๆecho "found"แล้วคุณจะมุ่งหน้าไปในทิศทางที่ถูกต้อง
ฉันมักจะใช้:
if (code); then
code;
fi
อาจไม่ใช่สิ่งที่คุณต้องการอย่างแน่นอน แต่มันก็เป็นอะไรที่มากกว่า