{{entry>Kurse/BASH Programmierung;-}} ====== Proaktive Einführung in BASH, PHP und Programmierung / programmier_projekt_PEBPP ====== Wir bauen eine Adressverwaltung! Warum? Weil eine Adressverwaltung alle Anforderungen an eine Programmiersprache abdeckt, um diese kennenzulernen. ===== Idee ===== Um einen Einstieg zu geben, dem möglichst alle Leute folgen können, werden hier die Vorgaben beschrieben damit Du in Eigenarbeit, Stück für Stück, ein lauffähiges Programm schreiben kannst. Gedacht ist dabei, im Wechsel selber zu programmieren und das jeweilige Ergebnis dann beim LUG-Treffen vorzustellen und weiter zu optimieren. Lösungen zu erarbeiten und sich so in die Basics der Programmierung vorzutasten. Hier werden die Schritte nach und nach veröffentlicht, und vielleicht auch das ein oder andere Programm vorgestellt, oder es gar in Entwicklung in einem [[http://pad.fkn-systems.de|Pad]] zu zeigen. Das Pad kann auch gut zum gemeinsamen Arbeiten und/oder Austausch genutzt werden. Eine erste Version wird in BASH gebaut, wenn diese fertig ist werden wir sie nochmals in PHP (Konsole only) bauen. Die Idee dahinter ist, das Du sowohl die grundsätzliche LINUX-System Programmierung, wie auch programmieren im allgemeinen und durch das Umsetzten des fertigen Programmes ebenfalls erste Schritte in Richtung Web-Programmierung kennen lernst. ===== Werkzeuge ===== * [[http://pad.fkn-systems.de|Pad]] / Zum Austausch oder gemeinsamen Arbeiten. * {{ :vortraege:bash:programmier_projekt_pebpp:advanced_bash-scripting_guide_2014-03-10_v.10_abs-guide.pdf |ABS.PDF (2.6MB)}} / Kompendium zu BASH, das Nachschlagewerk für alle Fälle * http://searx.fkn-service.de/?q=bash%20anleitung%20deutsch&categories=general&language=de-DE * BASH / Die zu benutzende Shell * PHP (5-7) / der PHP-Interpreter * [[http://php.net]] / Die Informationsquelle zu PHP * Dateiverwaltung und Editor: https://www.midnight-commander.org/ * Editoren: mcedit, joe, kwrite, kate In eigener Sache: Wer mal [[https://wiki.fkn-systems.de/wiki/doku.php?id=vortraege:programmieren|hier]] reinlesen möchte, meldet sich bitte bei [[:user:franke|mir]] für Zugang. ===== Teil 1 / Vorgaben zum Adressbuch ===== Ein Adress-Programm in BASH habe ich schon in den Neunzigern geschrieben es ist 5382 Zeichen (incl. Kommentaren) groß. Das sollte also zu schaffen sein. ;-) --- //[[:user:franke|Franke]] 2016-10-13 06:26// Das Programm soll folgendes können: * Menu * Eingabe * Ausgabe * Sortieren * Suchen * Loeschen * UNDO * Source * Hilfe * ENDE * Verarbeitet werden Adress- oder Freiformdaten, b.B.: Vorname, Nachnahme, Strasse, Telefon, Email, Keywords, Variablen,... * Daten werden nur als Textonly (ASCII) verarbeitet und gespeichert. * Kommentare im Programm sind Pflicht. * Jedes Programm enthält einen Versionsschlüssel in der Form: * $VER: PROGRAMMNAME 0.0.1.5 (2016-10-13) (2016-01-01) PROGRAMMIERER $ * $_VERDESC: NAME major-release.minor-release.major-bugfix.minor-changes DT-STAMP-CHANGE DT-STAMP-CREATE CREATOR-STRING $ * Jedes veröffentlichte Programm trägt einen Dateinamen nach folgenden Schema (Sonst können wir hier die Programme nicht zuordnen oder vergleichen): * PROGRAMMNAME.0.0.1.5.PROGRAMMIERER.DT-STAMP-CHANGE.bash * fkn_adr.0.0.1.2.franke.20161012.bash * Speichert auch für euch jede Version, dann könnt Ihr nachvollziehen was Ihr gemacht habt. * Es ist sinnvoll zum jeweiligen Programm auch eine Demo Datei mit Dummy-Einträgen (also keine existierende Adressen etc.) zu haben, diese sollte dann auch dem Programm zuzuordnen sein, also besser ebenfalls nach dem Namensschema anlegen: fkn_adr.0.0.1.2.franke.20161012.db * Sendet mir nach jedem Treffen eure jeweilige Version damit ich die hier reinstellen kann, dann kann jeder vom anderen lernen. Viel Erfolg! ===== Programm Versionen ===== Ein erstes Rumpfprogramm seht Ihr hier: #!/bin/bash ############################################### # $VER: adressprogramm_in_bash 0.0.0.1 (20020712/Franke) (19971001) FKN-Systems/Ng $## # Adress-Demo in Bash-Script ####################### ############################################### # DECLARATIONS / VARIABLES / FUNCTIONS / ... ################################ # START ################################ clear echo echo "Willkommen zum ..." echo echo "dieses Programm ist ..." echo echo "Es dient dem Erfassen, suchen, loeschen von Datensaetzen aller Art" echo "---------------------------------------------------------------------" # MAIN ################################# # ... exit 1 ===== Etappen ===== - Implementiert ein Auswahlmenu und seht die einzelnen Programmfunktionen vor. * Dazu ist z.B. eine case-Auswahl geeignet - Ausbau der einzelnen Programmfunktionen. - ... ===== Schnipsel ===== Testschnipsel für Teil: 1 #!/bin/bash # Variablen Zuweisung: KEY='value' Variablenname='Ein Text' FOO='BAR' echo $FOO echo ${FOO} # das sollte IMMER so geschrieben werden echo 'BAR ${FOO} FOO' # einfache Ticks entwerten echo "BAR ${FOO} FOO" # doppelte Ticke entwerten NICHT select VAR in AA BB CC do case ${VAR} in AA) #################### echo 'FOO' ;; BB) #################### echo 'BAR' ;; *) ###################### echo 'DEFAULT' ;; esac done