Verwendung von schreibgeschützten Variablen in Shell-Skripten [geschlossen]

7

Ist es eine gute Shell-Programmierpraxis, Read-Only-Variablen wann immer möglich zu verwenden oder hat sie irgendwelche Nachteile? Z.B. Wenn ich ein Skript schreiben möchte, das aus mehreren Skriptdateien besteht, die unveränderliche Dateipfade verwenden, wäre es sinnvoll, die Pfade wie folgt zu deklarieren:

%Vor%

Noch eine Frage: Ist es eine gute Idee, den monolithischen und langweiligen Shellcode-Code in separate Dateien zu zerlegen? Vielen Dank für Ihre Antworten.

    
user1812379 15.11.2012, 19:24
quelle

4 Antworten

11

Es klingt, als könnten Sie denken, dass readonly mehr tut, als es wirklich tut. Zum einen wird der schreibgeschützte Status nicht in die Umgebung exportiert oder von untergeordneten Prozessen übernommen:

%Vor%     
Mark Reed 15.11.2012, 22:31
quelle
5

Generell ist es eine gute Sache, Read-Only-Variablen (in jeder Sprache) zu verwenden und Ihr Programm (in jeder Sprache) zu modularisieren.

Read-only-Variablen schützen vor einer häufigen Fehlerquelle und verbessern die Lesbarkeit und Wartbarkeit. Wenn Sie wissen, dass Sie sich auf den Wert einer Variablen verlassen können, können Sie besser über Ihr Programm nachdenken und später Annahmen über diese Variable treffen - Dinge, die Sie nicht tun könnten, wenn die Variable änderbar wäre.

Modularisierung verbessert Wartbarkeit und Wiederverwendbarkeit. Mehr Module bedeuten im Allgemeinen feinkörnigere Einheiten, die unter verschiedenen Umständen wiederverwendet werden können, kürzere Codes, die leichter zu lesen sind, und wenn Ihre Module unabhängig sind, weniger Interaktionen zwischen Teilen, die eine Modifikation zerstören könnten.

    
RonaldBarzell 15.11.2012 19:29
quelle
5

Eine klassische Verwendung von schreibgeschützten Variablen ist mit TMOUT . Wird diese Variable auf einen Wert ungleich Null gesetzt, wird eine interaktive Terminalsitzung nach TMOUT Sekunden Inaktivität (d. H. Keine Tastatureingabe) abgemeldet. Um zu verhindern, dass ein intelligenter Benutzer die Einstellung überschreibt, verwenden Sie readonly :

%Vor%

Nachdem dies geschehen ist, gibt es keine Möglichkeit zu tun:

%Vor%     
JRFerguson 15.11.2012 22:26
quelle
2

Ich glaube nicht, dass Readonly-Variablen in bash nützlich sind. Ich kann mir kein Problem vorstellen, das ich hätte verhindern können, indem ich eine Variable nur lesbar gemacht hätte. Solche Einschränkungen stehen der dynamischen Natur von bash entgegen. Es gibt andere häufigere Ursachen für Probleme (wie zB Fehlbuchungen oder das Vergessen, Variablen als lokal zu deklarieren), die sowieso nicht verhindert werden können.

Wenn Sie Dinge trennen wollen, versuchen Sie nur "Funktionen" zu teilen, nicht nur Code-Stücke. Es ist einfacher, eine kleine Sache wiederzuverwenden, wenn Sie wissen, dass "source ~ / myscript.sh" eigentlich gar nichts macht.

    
cdleonard 15.11.2012 19:54
quelle

Tags und Links