Ich stoße auf viele Shell-Skripte mit Variablen in Großbuchstaben und habe immer gedacht, dass dies ein schwerwiegendes Missverständnis darstellt. Mein Verständnis ist, dass Umgebungsvariablen gemäß Konvention (und möglicherweise aufgrund der Notwendigkeit vor langer Zeit) in Großbuchstaben angegeben sind.
In modernen Skriptumgebungen wie Bash habe ich jedoch immer die Konvention von Kleinbuchstaben für temporäre Variablen und Großbuchstaben nur für exportierte Variablen (dh Umgebungsvariablen) bevorzugt . Beispielsweise:
#!/usr/bin/env bash
year=`date +%Y`
echo "It is $year."
export JAVA_HOME="$HOME/java"
Das war schon immer meine Einstellung. Gibt es maßgebliche Quellen, die diesem Ansatz entweder zustimmen oder nicht zustimmen, oder ist es nur eine Frage des Stils?
quelle
USER="username"
in einem Bash-Skript zur Automatisierung einiger Remote-Befehle über ssh anstelle vonuser="username"
. Pfui! Ich bin froh, dass ich es jetzt weiß!Alle konsequent befolgten Namenskonventionen helfen immer. Hier einige hilfreiche Tipps zur Benennung von Shell-Variablen:
Verwenden Sie alle Groß- und Kleinschreibung für exportierte Variablen und Konstanten, insbesondere wenn sie von mehreren Skripten oder Prozessen gemeinsam genutzt werden. Verwenden Sie nach Möglichkeit ein gemeinsames Präfix, damit verwandte Variablen hervorstechen und nicht mit internen Bash-Variablen kollidieren , die alle in Großbuchstaben geschrieben sind.
Beispiele:
JOB_HOME
JOB_LOG
JOB_TEMP
JOB_RUN_CONTROL
LOG_DEBUG
LOG_INFO
LOG_ERROR
STATUS_OK
STATUS_ERROR
STATUS_WARNING
Verwenden Sie "Snake Case" ( alle Klein- und Unterstriche ) für alle Variablen, die sich auf ein einzelnes Skript oder einen Block beziehen.
Beispiele:
input_file
first_value
max_amount
num_errors
Verwenden Sie Groß- und Kleinschreibung, wenn die lokale Variable eine Beziehung zu einer Umgebungsvariablen hat, z.
old_IFS
old_HOME
Verwenden Sie einen führenden Unterstrich für "private" Variablen und Funktionen. Dies ist besonders relevant, wenn Sie jemals eine Shell-Bibliothek schreiben, in der Funktionen innerhalb einer Bibliotheksdatei oder zwischen Dateien Variablen gemeinsam nutzen müssen, ohne jemals mit etwas in Konflikt zu geraten, das im Hauptcode möglicherweise ähnlich benannt ist.
Beispiele:
_debug
_debug_level
_current_log_file
Vermeiden Kamel Fall . Dadurch werden die durch Tippfehler verursachten Fehler minimiert. Denken Sie daran, dass bei Shell-Variablen zwischen Groß- und Kleinschreibung unterschieden wird .
Beispiele:
inputArray
thisLooksBAD
,numRecordsProcessed
,veryInconsistent_style
Siehe auch:
quelle
Wenn Shell-Variablen in die Umgebung exportiert werden sollen, sollten Sie berücksichtigen, dass in der Definition der Umgebungsvariablen für POSIX (Ausgabe 7, Ausgabe 2018) Folgendes angegeben ist:
...
quelle
Ich mache was du machst. Ich bezweifle, dass es eine maßgebliche Quelle gibt, aber es scheint ein ziemlich weit verbreiteter De-facto-Standard zu sein.
quelle
cat /tmp/location.txt
Tatsächlich scheint der Begriff "Umgebungsvariablen" relativ neu zu sein. Kernighan und Pike sprechen in ihrem 1984 veröffentlichten klassischen Buch "The UNIX Programming Environment" nur von "Shell-Variablen" - es gibt nicht einmal einen Eintrag für "Environment" im Index!
quelle
Es ist nur eine sehr weit verbreitete Konvention, ich bezweifle, dass es eine "maßgebliche" Quelle dafür gibt.
quelle
Ich neige dazu, ALL_CAPS sowohl für Umgebungsvariablen als auch für globale Variablen zu verwenden. Natürlich gibt es in Bash keinen wirklichen Variablenbereich, daher gibt es einen großen Teil der Variablen, die als Globale verwendet werden (hauptsächlich Einstellungen und Statusverfolgung), und relativ wenige "Einheimische" (Zähler, Iteratoren, teilweise konstruierte Zeichenfolgen und Temporäre).
quelle