มีแบบแผนการตั้งชื่อตัวแปรในเชลล์สคริปต์หรือไม่


113

MY_VARIABLE=fooภาษาส่วนใหญ่จะมีการตั้งชื่ออนุสัญญาสำหรับตัวแปรสไตล์ที่พบมากที่สุดที่ฉันเห็นในเชลล์สคริปต์คือ นี่เป็นอนุสัญญาหรือเป็นเพียงตัวแปรส่วนกลางเท่านั้น สิ่งที่เกี่ยวกับตัวแปรท้องถิ่นสคริปต์?


1
สิ่งเดียวที่ฉันรู้ว่าทุกคนควรปฏิบัติตามคือชื่อตัวพิมพ์ใหญ่ทั้งหมดควรสงวนไว้สำหรับเชลล์ ไม่ใช้พวกเขาตั้งใจที่จะหลีกเลี่ยง clobbering บางสิ่งบางอย่างที่สำคัญเช่นPATHหรือHOMEหรือสิ่งอื่นที่เปลือกอาจจะจองในอนาคต
jw013

3
จริงๆแล้วชื่อตัวพิมพ์ใหญ่ทั้งหมดจะใช้สำหรับตัวแปรสภาพแวดล้อม ตัวแปรบางตัว (เช่น PATH) ถูกตีความโดยเชลล์ในขณะที่ตัวแปรอื่น ๆ (เช่น LANGUAGE หรือ PRINTER) อาจถูกตีความโดยโปรแกรมอื่น แต่ไม่มีอะไรพิเศษเป็นพิเศษเกี่ยวกับพวกเขา
jlp

'ตัวแปรสภาพแวดล้อม' เป็นชื่อที่เหมาะสมแน่นอนฉันจะรวมไว้ในคำตอบของฉัน
jippie

ในขณะที่ไม่เผด็จการคู่มือ Google มีคำแนะนำที่ดี: google.github.io/styleguide/shell.xml มันแนะนำการเกาะติดกับตัวพิมพ์ใหญ่ทั้งหมดสำหรับค่าคงที่และตัวแปรที่ส่งออกเท่านั้นตัวเรือนงูสำหรับทุกอย่างอื่น โดยส่วนตัวฉันชอบเคสอูฐสำหรับลูกกลมของฉันเพราะไม่มีใครแนะนำเลยซึ่งลดความน่าจะเป็นของการตั้งชื่อการชน นอกจากนี้ฉันชอบวิธีที่พวกเขาอ่าน
Bile Phile

1
คำถามที่คล้ายกันในดังนั้น: ทุบตีถูกต้องและเปลือกโครงสร้างเงินทุนของตัวแปรสคริปต์
codeforester

คำตอบ:


111

ตัวแปรสภาพแวดล้อมหรือตัวแปรเชลล์ที่ระบบปฏิบัติการหรือสคริปต์เริ่มทำงานของเชลล์ ฯลฯ มักจะนำCAPITALSมาใช้

lower caseเพื่อป้องกันไม่ให้ตัวแปรของคุณเองจากความขัดแย้งกับตัวแปรเหล่านี้ก็เป็นวิธีที่ดีที่จะใช้


32
lower_caseขีดล่างคั่นด้วยหรือcamelCase?
Garrett Hall

3
@ GarrettHall ขึ้นอยู่กับคุณ เมื่อคุณเลือกหนึ่งติดกับมัน ความสอดคล้องมีความสำคัญมากกว่าตัวเลือกจริง
jw013

2
เรื่องของรสชาติ ฉันชอบสไตล์ C โดยส่วนตัวcamelCaseเพราะสั้นกว่าและไม่ใช้ขีดเส้นใต้ที่น่าเกลียด ลิ้มรสสไตล์ ...
jippie

19
เรื่องของรสชาติ ฉันชอบขีดเส้นใต้แยกอ่านง่ายขึ้น
janos

4
เพื่อความสมบูรณ์ตัวแปรสภาพแวดล้อมที่ไม่ได้เป็นหมวดหมู่เดียวของชื่อตัวแปรเปลือกอัตภาพทุกตัวพิมพ์ใหญ่ - กฎนี้ยังนำไปใช้ builtins (ชอบPWD, PS4หรือBASH_SOURCE)
ชาร์ลส์ดัฟฟี่

62

ใช่มีรูปแบบรหัสแบบเต็มสำหรับการทุบตีรวมถึงชื่อตัวแปร ยกตัวอย่างเช่นที่นี่เป็นของ Google คู่มือสไตล์เชลล์

เป็นบทสรุปสำหรับชื่อตัวแปรโดยเฉพาะ:

ชื่อตัวแปร : ตัวพิมพ์เล็กโดยใช้เครื่องหมายขีดล่างเพื่อแยกคำ Ex:my_variable_name

ค่าคงที่และชื่อตัวแปรสภาพแวดล้อม : ตัวพิมพ์ใหญ่ทั้งหมดคั่นด้วยขีดล่างประกาศที่ด้านบนของไฟล์ Ex:MY_CONSTANT


1
ที่ลิงค์ข้างต้นคือตอนนี้ตาย แต่ผมเชื่อว่านี่คือสิ่งที่มันเชื่อมโยงกับ: google.github.io/styleguide/shell.xml
แซม

1
@ Sam ขอขอบคุณ ใช่ว่ามัน เกี่ยวกับเวลาที่ Google หยุดใช้ googlecode.com lol
Anonsage

1
อย่าคุณมักจะทำสิ่งที่ Google กล่าวว่า? ;-)
tim.rohrer

1
การประชุมเหล่านี้เป็นเพียงโครงการ Google สำหรับโครงการโอเพ่นซอร์สของตนเอง: แม้ว่าพวกเขาอาจเป็นกฎที่ดีมาก แต่ก็ไม่สามารถใช้ได้กับทุกโครงการ
smonff

1

การขีดเส้นใต้เพื่อแยกคำดูเหมือนจะเป็นวิธีที่ดีที่สุด
ฉันมีเหตุผลเล็กน้อยที่จะชอบ snake_case มากกว่า camelCase เมื่อฉันมีอิสระที่จะเลือก:

  1. มีความยืดหยุ่น: คุณสามารถใช้ตัวพิมพ์ใหญ่และตัวพิมพ์เล็ก (เช่นMY_CONSTANTและmy_variable);
  2. ความสอดคล้อง: ตัวเลขสามารถแยกออกได้เพื่อให้ตัวเลขอ่านได้ง่ายขึ้น (เช่น1_000_000_000) และคุณลักษณะนี้ได้รับการสนับสนุนในภาษาการเขียนโปรแกรมจำนวนมาก
  3. ทั่วไป: ทั่วไป ณ จุดที่ regex \wจัดการขีดล่างเช่นตัวอักษรคำและตัวเลข ( [a-zA-Z0-9_])
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.