Apakah ada konvensi penamaan untuk variabel dalam skrip shell?

113

Sebagian besar bahasa memiliki konvensi penamaan untuk variabel, gaya paling umum yang saya lihat di skrip shell adalah MY_VARIABLE=foo. Apakah ini konvensi atau hanya untuk variabel global? Bagaimana dengan variabel lokal ke skrip?

Garrett Hall
sumber
1
Satu-satunya yang saya tahu yang harus diikuti semua orang adalah semua nama huruf besar harus disediakan untuk shell. Jangan menggunakannya untuk menghindari secara tidak sengaja menabrak sesuatu yang penting seperti PATHatau HOMEatau apa pun yang mungkin disimpan oleh cangkang di masa depan.
jw013
3
Sebenarnya, semua nama huruf besar biasanya digunakan untuk variabel lingkungan. Beberapa variabel (seperti PATH) ditafsirkan oleh shell, sementara yang lain (seperti LANGUAGE atau PRINTER) dapat ditafsirkan oleh program lain, tetapi tidak ada yang khusus tentang mereka.
jlp
'variabel lingkungan' memang nama yang tepat, saya akan memasukkannya dalam jawaban saya.
jippie
Meskipun tidak resmi, panduan Google ini memiliki saran bagus: google.github.io/styleguide/shell.xml . Ini menyarankan menempel pada semua caps hanya untuk konstanta dan variabel yang diekspor, case ular untuk yang lainnya. Secara pribadi saya suka kasing unta untuk global saya karena tidak ada orang lain yang merekomendasikannya, yang menurunkan kemungkinan penamaan tabrakan. Ditambah lagi, saya suka cara mereka membaca.
Binary Phile
1
Pertanyaan serupa pada SO: Kapitalisasi variabel skrip Bash dan shell yang benar .
codeforester

Jawaban:

111

Variabel lingkungan atau variabel shell yang diperkenalkan oleh sistem operasi atau skrip startup shell, dll. Biasanya semuanya masuk CAPITALS.

Untuk mencegah variabel Anda sendiri bertentangan dengan variabel-variabel ini, itu adalah praktik yang baik untuk digunakan lower case.

jippie
sumber
32
lower_casegaris bawah dipisahkan atau camelCase?
Garrett Hall
3
@ GarrettHall Itu sepenuhnya terserah Anda. Setelah Anda memilih satu tongkat dengan itu. Konsistensi lebih penting daripada pilihan yang sebenarnya.
jw013
2
masalah rasa? Saya pribadi suka C-style camelCasekarena lebih pendek dan tidak menggunakan garis bawah jelek. Cicipi, gaya, ...
jippie
19
masalah rasa? Saya pribadi suka garis bawah dipisahkan, lebih mudah dibaca.
janos
4
Untuk kelengkapan, variabel lingkungan bukan satu-satunya kategori nama variabel konvensional semua-huruf besar shell - aturan ini juga berlaku untuk builtin (seperti PWD, PS4, atau BASH_SOURCE).
Charles Duffy
62

Ya, ada konvensi gaya kode lengkap untuk bash, termasuk nama variabel. Misalnya, inilah Panduan Gaya Shell Google .

Sebagai ringkasan untuk nama variabel secara khusus:

Nama Variabel : Huruf kecil, dengan garis bawah untuk kata-kata yang terpisah. Ex:my_variable_name

Konstanta dan Nama Variabel Lingkungan : Semua huruf besar, dipisahkan dengan garis bawah, dideklarasikan di bagian atas file. Ex:MY_CONSTANT

Penjara
sumber
1
Tautan di atas sekarang sudah mati, tetapi saya yakin inilah yang tertaut ke: google.github.io/styleguide/shell.xml
Sam
1
@ Sam, terima kasih. Yap, itu saja. Sudah saatnya Google berhenti menggunakan googlecode.com lol
Anonsage
1
Apakah Anda selalu melakukan apa yang dikatakan Google? ;-)
tim.rohrer
1
Konvensi ini hanya untuk Google untuk proyek open source mereka sendiri: meskipun ini bisa menjadi aturan yang sangat baik, itu tidak dapat diterapkan untuk semua proyek.
smonff
1

Menggarisbawahi untuk memisahkan kata tampaknya menjadi cara terbaik untuk pergi.
Saya punya beberapa alasan untuk memilih snake_case daripada camelCase ketika saya bebas memilih:

  1. Fleksibel: Anda dapat menggunakan huruf besar dan kecil (mis. MY_CONSTANTDan my_variable);
  2. Konsisten: Digit dapat dipisahkan untuk membuat angka lebih mudah dibaca (mis. 1_000_000_000) Dan fitur ini didukung dalam banyak bahasa pemrograman;
  3. Umum: Biasa pada titik regex \wmenangani garis bawah seperti karakter dan angka kata ( [a-zA-Z0-9_]).
isar
sumber