@lipkowski.be:
Es macht keinen Spass, Deine Antworten in Code-Tags zu lesen, wenn die Zeile nicht umbegrochen wird und man bei jeder Antwort nach rechts raus scrollen muss.
Anmeldungsdatum: Beiträge: 58 |
@lipkowski.be: Es macht keinen Spass, Deine Antworten in Code-Tags zu lesen, wenn die Zeile nicht umbegrochen wird und man bei jeder Antwort nach rechts raus scrollen muss. |
||||||||
Anmeldungsdatum: Beiträge: 17548 Wohnort: Berlin |
A: => http://en.wikipedia.org/wiki/Top_post Q: Were do I find info about this thing called top-posting? A: => Because it messes up the order in which people normally read text. Q: Why is top-posting such a bad thing? A: => Top-posting. Q: What is the most annoying thing in e-mail? A: => No. Q: Should I include quotations after my reply?
Soll ich mir jetzt einen Wolf scrollen? Was soll diese Formatierung? ☺
Was sonst könnte das sein, wenn nicht eine Variable?
Sehr gut, nur ist das kein Argument gegen Initialisierung bei Deklaration.
Was ohne Argument behauptet wurde, kann auch ohne Argument zurückgewiesen werden.
Ein Beispiel für eine Variable mit Präfix.
Das wird nicht sichtbar, schon gar nicht eindeutig. Wieso nicht ein l_Präfix, wenn es
Ok, das konnte ich nicht wissen.
Verstehe ich nicht. Du meinst "überdeckt"? Dass Du nicht aus Versehen eine Funktion "ls" schreibst sondern "_ls "? Kam das in der Praxis bei Dir vor?
Außer der User hat seine Shellskripte _ls genannt, um nicht aus Versehen Systemprogramme zu überschreiben. ☺
Verstehe ich nicht. Mit was für Abfragen kann man den Code vorher unterbrechen?
Man hat keine klare Fehlercoderückgabe, sondern überschreibt den Fehlercode, macht dem Aufrufer was vor.
Deine Privatsyntax mit Missbrauch des Codeblocks und den Pfeilen ist übrigens auch ungünstig, um darauf zu antworten. Alles wird eingefettet, wenn man nicht überall den Codeblock, wo keiner hingehört, restauriert, oder die Pfeile manuell wegmacht und dafür Quotingzeichen hinmacht, wo sie hingehören. |
||||||||
Anmeldungsdatum: Beiträge: 58 |
Wenn jemand, der keine Erfahrung mit Shellscripten hat, fragt, dann stimme ich zu: Besser mehr Erklärung, als weniger. Natürlich würde ich selbst niemals mehr in irgend ein Script schreiben: "Das ist eine Variable". Vielleicht noch Dokumentation zur Variable wie z. B. das hier: VERB=3 # Set log file verbosity. MUTE=20 # Silence repeating messages
Variablen initialisieren ist nichts schlechtes. Das zu unterlassen kam bei mir gelegentlich vor und führt u. U. zu aufwändiger Fehlersuche. –- Ich hab' mal gelernt, dass globale Variablen Bäh sind und deswegen nutze ich sie möglichst nicht. Oder sachlich ausgedrückt: Globale Variablen können zu allerhand Problemen führen. Z. B.: Verschiedene Codestellen verwenden - unbewusst - gleiche globale Variablen und stören sich so gegenseitig. Deswegen verwende ich selbst im Normalfall in der Bash nur lokale Variablen. Das war in der Bash etwas Selbsterzhiehung, weil - wie schon geschrieben - in der Bash per Default alles globale Variablen sind. Insofern mache ich es gerade anders herum wie lipkowski.be: Ich kennzeichne globale Variablen so dass ich das als Warnung sehe, dass hier eine globale Variable ist. Ich selbst nutze dafür Variablennamen in komplett Grosschreibung. Den Hinweis auf readonly Variablen finde ich sehr gut. Denn die meisten globalen Variablen, die ich verwende, sind nur irgendwelche Einstellungen, die am Anfang lediglich gesetzt werden und dann nur noch gelesen werden. –- Zum Thema Verzierung mit my-Präfix: Ich mache das mit Funktionsnamen, wenn ich sehr allgemeine Namen verwende, die es sehr wahrscheinlich/tatsächlich gibt, z. B.:
–- Was die Trennung zwischen Deklaration und Zuweisung betrifft: Ich mache das bei globalen Variablen, weil ich dann in einem Kommando den export durchführen will, statt jedes mal jedes mal explizit export davor zu schreiben:
–- So insgesamt geht das aber schon in die Richtung Grundsätze vernünftiger Programmierung, was sich für mich mit der Bash als Programmiersprache beisst, weil das IMHO keine vernünftige Programmiersprache ist. Also ich selbst übertreibe das mit dem Konformitätsbestreben da nicht besonders. Der Vorteil der Bash ist für mich vor allem, dass ich damit schnell zu Ergebnissen komme. Da will ich mir nicht selbst all zu viele Regeln auferlegen. Wenn mir Codequalität wichtig ist, dann nehme ich nicht die Bash. Wenn man sich z. B. aus Portabilitätsgründen für die Bash bzw. POSIX-Shell entscheidet, dann sieht das natürlich etwas anders aus. |
||||||||
Anmeldungsdatum: Beiträge: 17548 Wohnort: Berlin |
Ja, bei längeren Scripten die man dann auch noch umbaut. Eine zweite, wünschenswerte Angewohnheit ist es, Variablen so spät wie möglich zu deklarieren. Solange die Variable nicht bekannt ist kann sie auf das Programm keinen Einfluss haben und umgekehrt. Das vereinfacht das Nachdenken über ein Programm ungemein, wenn es nur 3 Variabelen im Scope gibt, und nicht 20.
Ja, bei luftigen Programmen die nicht mehr als eine Bildschirmseite füllen sollten globale Variablen kein Problem sein. Bei längeren empfiehlt es sich regen Gebrauch von
In vielen Sprachen benutzt man Großschreibung für KONSTANTEN. 😉
Wenn ich
Da habe ich was für Dich,
Wie man sieht, kann man die Schalter -r, -i, -x an eine ganze Liste von Variablen durchreichen. |
||||||||
Anmeldungsdatum: Beiträge: 58 |
Ich finde es aber trotzdem gut, globale Variablen irgendwie visuell erkennbar zu kennzeichnen. Es ist die Frage, ob ich globale Variablen(die keine Konstanten sind), jetzt nach der Erkenntnis von readonly wirklich noch brauche. Aber gerade dann, wenn globale Variablen so selten sind, dann ist für mich ein Präfix eine akzeptable Variante. Z. B. g_ oder v_.
Ein Anwendungsfall ist bei mir ein einfacher Wrapper in der Art:
Damit ich SSH-Kommandos häufig mit wenigen Zeichen aufrufen kann. Darüber hinaus funktioniert das unten aufgeführt nicht:
Ich habe das gerade getestet und wundere mich, dass Variante 2 jetzt wohl doch funktioniert. Ich würde trotzdem bei der Wrapper-Variante bleiben, da ich ja ich da beim Aufruf weniger schreiben muss und vielleicht noch andere Sachen tun kann, z. B. das SSH-Kommando nochmal zu protokollieren, ...
Ja das gibt es nicht. Die Wahrscheinlichkeit, dass es das irgendwo gibt ist aber hoch. Und wenn ich ein Script, dass ich geschrieben habe dort einsetzen will, wo es ein "log" gibt, dann muss ich viele Zeilen ändern.
Gut das zu wissen! Ich mag es zusätzlich lieber, wenn 1 Variable pro Zeile steht; das finde ich schneller erfassbarer. Mal schauen, ob ich meine Gewohnheit da ändere. |
||||||||
Anmeldungsdatum: Beiträge: 11176 Wohnort: München |
Variante 1 sorgt dafür, dass ssh den Wert von Variante 2 kann zufällig funktionieren, wenn sich der String am IFS auftrennen lässt, ohne dass dabei Argumente kaputt gehen. Ich würde da sicherheitshalber ein Array nutzen (quoten muss man natürlich nur, wenn der IFS das nicht unpassend auftrennt, aber es schadet auch nicht):
|
||||||||
Anmeldungsdatum: Beiträge: 17548 Wohnort: Berlin |
Da will ich Dich nicht missionieren, aber würde, der Lese-Ergonomie wegen, ein Postfix verwenden. ☺
Typischer Fall für einen alias:
Kannst Du mit einem Alias auch.
Da habe ich aber eine kognitive Dissonanz. Ja, irgendwo wird es das schon geben, aber dort wird man auch wissen, dass ein fremdes Script kaum das eigene
Wieso? Doch nur, wenn Du das fremde
Okay, also deklarieren magst Du pro Variable in einer Zeile aber export willst Du zusammenfassen? Wie wäre es mit
Das ist pro Deklaration eine Zeile aber wenig Overhead durch den export. ☺ |