Saya menjalankan banyak skrip shell dengan variabel dalam semua huruf besar, dan saya selalu berpikir bahwa ada kesalahpahaman yang parah dengan itu. Pemahaman saya adalah bahwa, dengan konvensi (dan mungkin karena kebutuhan lama), variabel lingkungan berada di semua batas.
Tetapi dalam lingkungan skrip modern seperti Bash, saya selalu lebih suka konvensi nama huruf kecil untuk variabel sementara, dan huruf besar hanya untuk variabel yang diekspor (yaitu lingkungan) . Sebagai contoh:
#!/usr/bin/env bash
year=`date +%Y`
echo "It is $year."
export JAVA_HOME="$HOME/java"
Itu selalu menjadi pandangan saya tentang berbagai hal. Apakah ada sumber otoritatif yang setuju atau tidak setuju dengan pendekatan ini, atau apakah itu murni masalah gaya?
sumber
USER="username"
dalam skrip bash mengotomatisasi beberapa perintah jarak jauh melalui ssh bukanuser="username"
. Ugh! Senang saya tahu sekarang!Setiap konvensi penamaan yang diikuti secara konsisten akan selalu membantu. Berikut adalah beberapa tips bermanfaat untuk penamaan variabel shell:
Gunakan semua batas dan garis bawah untuk variabel dan konstanta yang diekspor, terutama ketika mereka dibagi di beberapa skrip atau proses. Gunakan awalan umum kapan pun berlaku sehingga variabel terkait menonjol dan tidak akan berbenturan dengan variabel internal Bash yang semuanya huruf besar.
Contoh:
JOB_HOME
JOB_LOG
JOB_TEMP
JOB_RUN_CONTROL
LOG_DEBUG
LOG_INFO
LOG_ERROR
STATUS_OK
STATUS_ERROR
STATUS_WARNING
Gunakan "case ular" ( semua huruf kecil dan garis bawah ) untuk semua variabel yang dicakup dalam satu skrip atau blok.
Contoh:
input_file
first_value
max_amount
num_errors
Gunakan case campuran ketika variabel lokal memiliki beberapa hubungan dengan variabel lingkungan, seperti:
old_IFS
old_HOME
Gunakan garis bawah utama untuk variabel dan fungsi "pribadi". Ini sangat relevan jika Anda pernah menulis pustaka shell di mana fungsi-fungsi di dalam file pustaka atau di seluruh file perlu berbagi variabel, tanpa pernah berbenturan dengan apa pun yang mungkin sama bernama dalam kode utama.
Contoh:
_debug
_debug_level
_current_log_file
Hindari kasing unta . Ini akan meminimalkan bug yang disebabkan oleh kesalahan ketik. Ingat, variabel shell peka huruf besar-kecil .
Contoh:
inputArray
thisLooksBAD
,numRecordsProcessed
,veryInconsistent_style
Lihat juga:
sumber
Jika variabel shell akan diekspor ke lingkungan, ada baiknya mempertimbangkan bahwa POSIX (Edisi 7, edisi 2018) Definisi Variabel Lingkungan menentukan:
...
sumber
Saya melakukan apa yang Anda lakukan. Saya ragu ada sumber yang berwenang, tetapi tampaknya standar de-facto cukup luas.
sumber
cat /tmp/location.txt
Sebenarnya, istilah "variabel lingkungan" tampaknya merupakan mata uang yang cukup baru. Kernighan dan Pike dalam buku klasik mereka "Lingkungan Pemrograman UNIX", yang diterbitkan pada tahun 1984, hanya berbicara tentang "variabel shell" - bahkan tidak ada entri untuk "lingkungan" dalam indeks!
sumber
Itu hanya konvensi yang diadakan secara luas, saya ragu ada sumber "otoritatif" untuk itu.
sumber
saya cenderung menggunakan ALL_CAPS baik untuk variabel lingkungan dan global. tentu saja, di Bash tidak ada ruang lingkup variabel nyata, jadi ada bagian yang baik dari variabel yang digunakan sebagai global (sebagian besar pengaturan dan pelacakan negara), dan relatif sedikit 'penduduk lokal' (penghitung, iterator, string sebagian dibangun, dan sementara)
sumber