ubuntuusers.de

gibt es gute(n) Angewohnheiten/Stil beim Skripten?

Status: Gelöst | Ubuntu-Version: Nicht spezifiziert
Antworten |

oliver1804

Anmeldungsdatum:
27. März 2006

Beiträge: 279

Wohnort: Elmshorn

Hallo liebe Gemeinde,

ich hab mir mittlerweile ein "kleines" awk-Skript gebastelt, welches noch weiter ausgebaut werden soll; momentan läuft außer ein paar Kopierbefehlen noch nicht wirklich viel.

Mit Dokumentation hat das Skript allerdings (wenn man die Leerzeilen mitrechnet) bereits an die 180 Zeilen und ist somit für einen Laien wie mich mittlerweile ein ganz schöner Brocken. Da ich befürchte, auf Dauer den Überblick zu verlieren, würd ich mich über ein paar konstruktive Verbesserungsvorschläge sehr freuen:

http://www.ubuntuusers.de/paste/12502/

Marc_BlackJack_Rintsch Team-Icon

Ehemalige
Avatar von Marc_BlackJack_Rintsch

Anmeldungsdatum:
16. Juni 2006

Beiträge: 4695

Wohnort: Berlin

Ich kenne mich mit awk nicht aus, aber so ein langes Skript würde ich in Funktionen unterteilen. Und die Variablennamen sind ziemlich kryptisch.

NoKurth

Avatar von NoKurth

Anmeldungsdatum:
18. August 2006

Beiträge: 430

Hallo Oliver,

muss es denn unbedingt awk sein? Ich glaube, du versuchst mit viel Aufwand Dinge mit dem awk zu machen, die per Shell/Skriptsprache einfacher und effektiver wären.

Gruß
Norman

oliver1804

(Themenstarter)

Anmeldungsdatum:
27. März 2006

Beiträge: 279

Wohnort: Elmshorn

@ Marc 'BlackJack' Rintsch

mit Funktionen meinst du wahrscheinlich Prozeduren? So wie ich Funktionen verstehe, geben die lediglich einen Wert zurück, während Prozeduren kleine Programmhäppchen sind (ich ordne diese Sache in die Kategorie prozedurale Programmierung ein). Funktionen sind in awk definitiv drin, was Prozeduren angeht, weiß ich das nicht so recht und auch in der Doku konnte ich das bisher noch nicht ausfindig machen

bei der Benamsung der Variablen hab ich mir natürlich was gedacht nur muß man wahrscheinlich generell ein System haben, was man dann auf Deubel-komm-raus bei jedem Skript durchhält (oder es entweder erweitert bzw. korrigiert, wenn man dessen Unzulänglichkeit erkennt)

@ NoKurth

Windoofs (XP im Büro) hat auch eine Shell und man kann damit sicherlich einige Dinge anstellen (FOR ist wirklich mächtig) aber diese ganze Batch-Kiste hat mich ziemlich genervt, weil ich aufgrund fehlender Fähigkeiten (RegEx, Arrays) dauernd zu awk etc. verzweigen mußte und auch die Variablensetzung hat mich nicht wirklich befriedigt. Der Gedanke ist, alles möglichst aus einem Guß hinzubekommen

Edit: ist awk keine Skriptsprache? AWK

Lunar

Anmeldungsdatum:
17. März 2006

Beiträge: 5792

oliver1804 hat geschrieben:

mit Funktionen meinst du wahrscheinlich Prozeduren? So wie ich Funktionen verstehe, geben die lediglich einen Wert zurück, während Prozeduren kleine Programmhäppchen sind (ich ordne diese Sache in die Kategorie prozedurale Programmierung ein). Funktionen sind in awk definitiv drin, was Prozeduren angeht, weiß ich das nicht so recht und auch in der Doku konnte ich das bisher noch nicht ausfindig machen

Uh? Funktionen geben nicht nur einen Wert zurück, sie führen - man glaubt es kaum 😉 - auch Code aus. Prozeduren sind nur Funktionen, die nichts zurück geben. Du scheinst die Bedeutung der Termini "Funktion" und "Prozedur" nicht ganz verstanden zu haben.

oliver1804 hat geschrieben:

bei der Benamsung der Variablen hab ich mir natürlich was gedacht nur muß man wahrscheinlich generell ein System haben, was man dann auf Deubel-komm-raus bei jedem Skript durchhält (oder es entweder erweitert bzw. korrigiert, wenn man dessen Unzulänglichkeit erkennt)

Man braucht nicht unbedingt ein System. Es gilt eigentlich nur die Regel: Variablennamen müssen aussagekräftig sein, und das auch für Dritte.

oliver1804 hat geschrieben:

Windoofs (XP im Büro) hat auch eine Shell und man kann damit sicherlich einige Dinge anstellen (FOR ist wirklich mächtig) aber diese ganze Batch-Kiste hat mich ziemlich genervt, weil ich aufgrund fehlender Fähigkeiten (RegEx, Arrays) dauernd zu awk etc. verzweigen mußte und auch die Variablensetzung hat mich nicht wirklich befriedigt. Der Gedanke ist, alles möglichst aus einem Guß hinzubekommen

gawks Möglichkeiten sind aber ziemlich limitiert. Versuch mal, mit gawk eine graphische Oberfläche zu erstellen... oder eine Website abzurufen und zu parsen... oder...

oliver1804 hat geschrieben:

Edit: ist awk keine Skriptsprache? AWK

Streng genommen schon, praktisch eher ein "Skriptsprächlein". gawk ist auf Textverarbeitung ausgelegt (was sich überall bemerkbar macht), richtige Anwendungen sind damit kaum zu programmieren. Dazu fehlen wichtige Sprachfeatures (v.a. Objekte) und eine umfangreiche Sammlung an Modulen für GUI Programmierung, Netzwerkprogrammierung, etc. gawk ist ganz nett, um mal eben eine Logdatei zu parsen und schön lesbar auszugeben, doch komplexere Dinge rufen nach anständigen Sprachen wie Ruby, Python, Perl ( naja, eher nicht 😉 ). Ich schließe mich daher NoKurths Meinung an: Verwende eine richtige Skriptsprache!

user_unknown

Avatar von user_unknown

Anmeldungsdatum:
10. August 2005

Beiträge: 17625

Wohnort: Berlin

Ohne dem Kern Deiner Aussage, lunar, widersprechen zu wollen, daß gawk nicht auf breiter Front eine geeignete Sprache ist, aber wenn Du so pingelig bist, dann bin ich es auch mal:

richtige Anwendungen sind damit kaum zu programmieren. Dazu fehlen wichtige Sprachfeatures (v.a. Objekte)


dann wäre mit C auch keine richtige Anwendung zu programmieren.

Richtige Anwendungen haben weder eine Mindestgröße, noch eine Mindestkomplexität, benötigen nicht zwingend eine GUI, und auch keine Netzwerkfähigkeiten.
Letzteres hat eigentlich nur eine Handvoll Programme.

Und "Textverarbeitung" ist für mich auch nicht der richtige Ausdruck.
Bei Herold: sed und awk, 1994 Addison-Wesley findet sich auch ein awk-Programm zum automatischen Erstellen von Netzplänen.

user_unknown

Avatar von user_unknown

Anmeldungsdatum:
10. August 2005

Beiträge: 17625

Wohnort: Berlin

oliver1804 hat geschrieben:

Windoofs (XP im Büro) hat auch eine Shell und man kann damit sicherlich einige Dinge anstellen (FOR ist wirklich mächtig) aber diese ganze Batch-Kiste hat mich ziemlich genervt, weil ich aufgrund fehlender Fähigkeiten (RegEx, Arrays) dauernd zu awk etc. verzweigen mußte und auch die Variablensetzung hat mich nicht wirklich befriedigt. Der Gedanke ist, alles möglichst aus einem Guß hinzubekommen

Wenn Du im Büro installieren darfst:
Es gibt eine Menge Gnu-tools (sh.exe, sed, awk, wc, rev, tar, find, ...) als native win32-Ports hier - erzeugt kein wahres Linuxfeeling, aber immerhin: http://unxutils.sourceforge.net/

NoKurth

Avatar von NoKurth

Anmeldungsdatum:
18. August 2006

Beiträge: 430

Hallo Oliver.

NoKurth hat geschrieben:

... die per Shell/Skriptsprache einfacher ...

OK, dann formuliere ich es in "andere Skriptsprache" um. 😉

Habe im Büro auch nur WinXP, zu Hause zustätzlich noch Linux. Aus diesem Grund und auch beim Durchstöbern vieler Threads habe ich mich entschlossen, mal in Python "reinzuriechen". <persönliche Meinung>Ich glaube, dass man damit eine ganze Menge Dinge einfacher als mit awk realisieren kann.</persönliche Meinung>

Gruß
Norman

Lux Team-Icon

Avatar von Lux

Anmeldungsdatum:
10. November 2005

Beiträge: 5152

Wohnort: Grüt (Gossau ZH), Schweiz

NoKurth hat geschrieben:

Habe im Büro auch nur WinXP, zu Hause zustätzlich noch Linux. Aus diesem Grund und auch beim Durchstöbern vieler Threads habe ich mich entschlossen, mal in Python "reinzuriechen". <persönliche Meinung>Ich glaube, dass man damit eine ganze Menge Dinge einfacher als mit awk realisieren kann.</persönliche Meinung>

Ich würde Perl nehmen, wenn Du auf verschiedenen Plattformen arbeitest.

Es ist auf jedem Unix vorinstalliert (auch auf Mac OS X) und für Windows gibt es mit Active State Perl auch eine gute Variante.

Gruß

Dirk

Marc_BlackJack_Rintsch Team-Icon

Ehemalige
Avatar von Marc_BlackJack_Rintsch

Anmeldungsdatum:
16. Juni 2006

Beiträge: 4695

Wohnort: Berlin

Python ist auf MacOS X auch installiert, es wird sogar vom System verwendet. Deinstallieren ist also keine gute Idee. ☺ Und es gibt auch ein ActiveState Python für Windows.

fnumatic

Anmeldungsdatum:
20. Februar 2007

Beiträge: 379

Ich würde Ruby nehmen. Gibts für viele, imho alle relevanten Plattformen.

Lux Team-Icon

Avatar von Lux

Anmeldungsdatum:
10. November 2005

Beiträge: 5152

Wohnort: Grüt (Gossau ZH), Schweiz

Marc 'BlackJack' Rintsch hat geschrieben:

Python ist auf MacOS X auch installiert, es wird sogar vom System verwendet. Deinstallieren ist also keine gute Idee. ☺ Und es gibt auch ein ActiveState Python für Windows.

Ich habe auf der Arbeit mit HP-UX zu tun. Dort gibt es kein Python. Perl ist allerdings vorhanden.

Gruß

Dirk

oliver1804

(Themenstarter)

Anmeldungsdatum:
27. März 2006

Beiträge: 279

Wohnort: Elmshorn

Ich schätze, daß ich mich dann nach diesem kleinen Projekt mal näher mit Perl beschäftigen werde (steht ja schon im Wikipedia-Artikel drin, daß Perl sozusagen der große Bruder vom awk ist). Problematisch ist halt die zu investierende Zeit, aber ich hoffe mal, daß meine awk-Kenntnisse ein wenig helfen.

@ user unknown

Deinen Link hab ich früher auch benutzt, aber jetzt scheint mir doch http://gnuwin32.sourceforge.net/ sinnvoller zu sein - ich darf installieren und nutze das auch aus (gawk, sed, grep, sort und wc sind meine Favoriten)

oliver1804

(Themenstarter)

Anmeldungsdatum:
27. März 2006

Beiträge: 279

Wohnort: Elmshorn

Hallo Gemeinde,

nach meinem Urlaub bin ich mal wieder dazu gekommen, an meinem Lieblings-gawk-Skript rumzubasteln (http://ubuntuusers.de/paste/14069/) und erfahre immer mehr, wie übel es ist, den Überblick zu verlieren - als Normalerweise-Nicht-Skripter soll sowas ja leicht passieren 😢

Vielleicht kann ja jemand aus meinem Weg, ein wenig Ordnung in die Sache zu bringen Nutzen ziehen und muß mein Tal der Tränen nicht komplett durchschreiten. Mein heißer Tipp lautet deshalb

1. gut sichtbar strukturiert zu schreiben
hab z.B. BEGIN- und END-Blöcke in meine Kommentare einbezogen und wichtige {}-Blöcke durch Leerzeilen otisch abgegrenzt

2. einen Editor mit Folding-Möglichkeit zu verwenden
damit kann man ganze Code-Blöcke zusammenfalten, so daß man nur noch eine Zeile sieht; gut ist, wenn man 1. beachtet hat
kann hier wärmstens (g)vim empfehlen (http://vimdoc.sourceforge.net/htmldoc/usr_28.html)

Tipps/Kritiken erfahrener Skripter sind immer willkommen

Hello.World

Anmeldungsdatum:
18. Januar 2006

Beiträge: 156

fnumatic hat geschrieben:

Ich würde Ruby nehmen. Gibts für viele, imho alle relevanten Plattformen.

Und ist so langsam wie kaum eine andere Sprache.

Antworten |