Κελύφη, Μεταβλητές και Προγραμματισμός

Slides:



Advertisements
Παρόμοιες παρουσιάσεις
Βάσεις Δεδομένων Ευαγγελία Πιτουρά 1 Ευρετήρια.
Advertisements

Γραφήματα & Επίπεδα Γραφήματα
UNIX.
Ερωτηματολόγιο Συλλογής Απαιτήσεων Εφαρμογών Υψηλών Επιδόσεων
Το αλφαριθμητικό (string)
Μάρτιος 2011 Βαρόμετρο ΕΒΕΘ - Καταναλωτές. “Η καθιέρωση ενός αξιόπιστου εργαλείου καταγραφής του οικονομικού, επιχειρηματικού και κοινωνικού γίγνεσθαι.
ΕΙΣΑΓΩΓΗ ΣΤΗΝ PHP. Τι θα μάθουμε;  Να καταλάβουμε τι είναι η PHP και πώς δουλεύουν τα PHP scripts  Τι χρειάζεται για να ξεκινήσουμε με την PHP  Να.
7.3.8 Μεταφραστές Ελληνογαλλική Σχολή Καλαμαρί - Τίκβα Χριστίνα.
ΕΝΤΟΛΕΣ.
Δομές Διακλάδωσης Μην ελπίζεις ότι θα ξεφύγεις αν κάνεις κάποιο κακό. Γιατί κι αν ξεφύγεις απ’ τη προσοχή των άλλων, θα υποπέσεις στην αντίληψη της συνείδησής.
HTML.
-Στοίβα-Ουρά - Πλεονεκτήματα πινάκων -Δομές δεδομένων δευτερεύουσας μνήμης -Πληροφορική και δεδομένα -Παραδείγματα-Προβλήματα ψευδοκώδικα.
ΥΠΟΠΡΟΓΡΑΜΜΑΤΑ ΤΜΗΜΑΤΙΚΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ
Σημειώσεις : Χρήστος Μουρατίδης
ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΙΑΣ ΤΜΗΜΑ ΜΗΧΑΝΟΛΟΓΩΝ ΜΗΧΑΝΙΚΩΝ ΒΙΟΜΗΧΑΝΙΑΣ Διάλεξη 2: Πίνακες και δυναμικά δεδομένα στη FORTRAN 90 Εαρινό εξάμηνο 2009 ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ.
Κεφάλαιο 6 Υλοποίηση Γλωσσών Προγραμματισμού
Η εντολή Δείξε είναι μια εντολή εξόδου και χρησιμοποιείται για:
ΘΕΩΡΙΑ ΔΙΑΛΕΞΗ 4 Αριθμητικές εκφράσεις και πράξεις Εντολές ανάθεσης
Εκτέλεση Αλγορίθμων σε ψευδογλώσσα
Εργαστήριο Λειτουργικών Συστημάτων Φροντιστήριο 2– Εισαγωγή στη Bash Ντίρλης Νικόλαος.
Τύποι πραγματικών αριθμών
Εισαγωγή στο MATLAB.
Περίληψη Αρχιτεκτονική Μικροεπεξεργαστών MIPS-32
Προγραμματισμός PASCAL Πληροφορική Γ' Λυκείου μέρος γ
ΗΥ-150 Προγραμματισμός Εντολές Ελέγχου Ροής.
Εισαγωγή στο UNIX και άλλα εργαλεία Pedro Trancoso Γιαννάκης Σαζεϊδης.
Βαρόμετρο ΕΒΕΘ - Καταναλωτές Σεπτέμβριος “Η καθιέρωση ενός αξιόπιστου εργαλείου καταγραφής του οικονομικού, επιχειρηματικού και κοινωνικού γίγνεσθαι.
Προγραμματισμός στο ΜatLab
Κεφάλαιο 2ο Πεπερασμένα αυτόματα.
Στο λειτουργικό σύστημα Windows, υπάρχουν εικονίδια (icons) τα οποία αναπαριστούν τις διάφορες οντότητες (φυλαγμένες πληροφορίες, προγράμματα που κάνουν.
Εξάσκηση στην προπαίδεια
Η επιρροή του χώρου εργασίας των σχολικών τάξεων στη μάθηση
Βαρόμετρο ΕΒΕΘ Μάρτιος “Η καθιέρωση ενός αξιόπιστου εργαλείου καταγραφής του οικονομικού, επιχειρηματικού και κοινωνικού γίγνεσθαι του Νομού Θεσσαλονίκης”
2006 GfK Praha CORRUPTION CLIMATE IN EUROPE % % % %0 - 10% % % % % % ΚΛΙΜΑ ΔΙΑΦΘΟΡΑΣ Η.
Βαρόμετρο ΕΒΕΘ Μάρτιος “Η καθιέρωση ενός αξιόπιστου εργαλείου καταγραφής του οικονομικού, επιχειρηματικού και κοινωνικού γίγνεσθαι του Νομού Θεσσαλονίκης”
Βάσεις Δεδομένων II Διαχείριση Δοσοληψιών Πάνος Βασιλειάδης Σεπτέμβρης 2002
Βαρόμετρο ΕΒΕΘ Σεπτέμβριος “Η καθιέρωση ενός αξιόπιστου εργαλείου καταγραφής του οικονομικού, επιχειρηματικού και κοινωνικού γίγνεσθαι του Νομού.
Η ΓΛΩΣΣΑ C ΜΑΘΗΜΑ 2.
Προγραμματισμός ΙΙ Διάλεξη #6: Απλές Δομές Ελέγχου Δρ. Νικ. Λιόλιος.
Ολυμπιάδα Πληροφορικής
Βαρόμετρο ΕΒΕΘ Μάρτιος “Η καθιέρωση ενός αξιόπιστου εργαλείου καταγραφής του οικονομικού, επιχειρηματικού και κοινωνικού γίγνεσθαι του Νομού Θεσσαλονίκης”
Microsoft Excel 4.4 Τύποι και Συναρτήσεις
ΗΥ302 Διδακτική της Πληροφορικής Η γλώσσα προγραμματισμού LOGO Writer Ομάδα Εργασία: Αλεβίζου Βασιλική (Α.Μ.:1029) Κοφφινά Ιωάννα (Α.Μ.:1035) Τριανταφυλλίδου.
Προγραμματισμός ΙΙ Διάλεξη #5: Εντολές Ανάθεσης Εντολές Συνθήκης Δρ. Νικ. Λιόλιος.
Μεταβλητές – εντολές εκχώρησης- δομή ακολουθίας
ΘΕΜΑΤΙΚΗ ΕΝΟΤΗΤΑ 2: ΘΕΜΑΤΑ ΘΕΩΡΗΤΙΚΗΣ ΕΠΙΣΤΗΜΗΣ Η/Υ
2-1 Ανάλυση Αλγορίθμων Αλγόριθμος Πεπερασμένο σύνολο εντολών που, όταν εκτελεστούν, επιτυγχάνουν κάποιο επιθυμητό αποτέλεσμα –Δεδομένα εισόδου και εξόδου.
Ενότητα Α.4. Δομημένος Προγραμματισμός
Βαρόμετρο ΕΒΕΘ - Καταναλωτές Μάρτιος “Η καθιέρωση ενός αξιόπιστου εργαλείου καταγραφής του οικονομικού, επιχειρηματικού και κοινωνικού γίγνεσθαι.
ΗΥ150 – ΠρογραμματισμόςΚώστας Παναγιωτάκης ΗΥ-150 Προγραμματισμός Αρχεία.
Προχωρημένα Θέματα Τεχνολογίας και Εφαρμογών Βάσεων Δεδομένων Διαχείριση Συναλλαγών Πάνος Βασιλειάδης Μάρτιος 2014
Επικοινωνία Ανθρώπου Μηχανής HTML CGI JAVASCRIPT Κουμπούλης Χρήστος Α.Μ. 921 Χαλαβαζής Βασίλης Α.Μ. 988.
ΤΑ ΔΟΝΤΙΑ ΜΑΣ.
ΘΕΜΑΤΙΚΗ ΕΝΟΤΗΤΑ 2: ΘΕΜΑΤΑ ΘΕΩΡΗΤΙΚΗΣ ΕΠΙΣΤΗΜΗΣ Η/Υ
Βαρόμετρο ΕΒΕΘ Σεπτέμβριος “Η καθιέρωση ενός αξιόπιστου εργαλείου καταγραφής του οικονομικού, επιχειρηματικού και κοινωνικού γίγνεσθαι του Νομού.
Εισαγωγή στην Πληροφορική και στην διαχείριση μεγάλου όγκου δεδομένων Γρηγόριος Αμούτζιας Επικ. Καθηγητής Βιοπληροφορικής στη Γενωμική Τμήμα Βιοχημείας.
Διαφάνειες παρουσίασης #2
Βασικά στοιχεία της Java
ΜΑΘΗΜΑ: ΣΥΓΧΡΟΝΟ ΛΟΓΙΣΜΙΚΟ ΟΡΓΑΝΩΣΗ ΓΡΑΦΕΙΟΥ 5 ο ΕΡΓΑΣΤΗΡΙΟ: ΕΓΚΑΤΑΣΤΑΣΗ ΕΚΤΥΠΩΤΩΝ ΚΑΘΗΓΗΤΗΣ: ΓΡΗΓΟΡΙΟΣ Ν. ΚΑΡΑΤΑΣΙΟΣ.
Εισαγωγή στην Python.
Βρόχος Do … Loop Σκοπός Μαθήματος Χρήση Do… Loop για την εκτέλεση μιας ομάδας εντολών μέχρι να εκπληρωθεί μια συγκεκριμένη συνθήκη. Αθήνα, 2015.
Βρόχος Do … Loop Σκοπός Μαθήματος Χρήση Do… Loop για την εκτέλεση μιας ομάδας εντολών μέχρι να εκπληρωθεί μια συγκεκριμένη συνθήκη.
Αρχεσ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Η/Υ ΤΑξη Β΄
ΑΛΓΟΡΙΘΜΟΣ ΠΡΟΒΛΗΜΑ ΑΛΓΟΡΙΘΜΟΣ ΛΥΣΗ
Ενισχυτική διδασκαλία
ΔΟΜΕΣ ΕΛΕΓΧΟΥ(if-else, switch) και Λογικοί τελεστές / παραστάσεις
Μανασσάκης Βασίλης Καθηγητής Πληροφορικής
ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΕΠΙΣΤΗΜΗ ΤΩΝ Η/Υ
Λήψη Αποφάσεων και Συναρτήσεις Ελέγχου
UNIT 1 Τα Πρώτα Προγράμματα.
Μεταγράφημα παρουσίασης:

Κελύφη, Μεταβλητές και Προγραμματισμός Γλώσσα C & Unix Τμήμα Πληροφορικής, ΑΠΘ B’ εξάμηνο lpis.csd.auth.gr/curriculum/C+Unix/UNCL202.html

Μεταβλητές του κελύφους Το κέλυφος του UNIX περιέχει ένα μηχανισμό μεταβλητών που κρατούν πληροφορίες χρήσιμες για το κέλυφος και για τα προγράμματα του χρήστη Όπως σε μια γλώσσα προγραμματισμού Το κέλυφος παρέχει ένα σύνολο από εντολές με τις οποίες ο χρήστης μπορεί να δει τις τιμές των μεταβλητών τις αλλάξει να δημιουργήσει δικές του μεταβλητές για να τις χρησιμοποιεί στα προγράμματα του

Κοινές μεταβλητές (HOME ) Περιέχει το πλήρες μονοπάτι του home directory του χρήστη. To home directory είναι ένας κατάλογος στο σύστημα αρχείων του UNIX, στο οποίο ο χρήστης μπορεί να αποθηκεύει τα αρχεία του. Η τιμή στην μεταβλητή HOME ορίζεται από το κέλυφος κατά τη διάρκεια του login.

Κοινές μεταβλητές (PATH ) Περιέχει ένα σύνολο από μονοπάτια, χωρισμένα με άνω και κάτω τελείες (:) που ορίζουν τα μονοπάτια στα οποία θα ψάχνει το κέλυφος για εκτελέσιμα αρχεία. Αν για παράδειγμα υπάρχει το πρόγραμμα calculator στον κατάλογο /users/bob/mybin/ τότε για να μπορεί ο χρήστης να τρέχει το calculator ανεξάρτητα από τον κατάλογο στον οποίο βρίσκεται, θα πρέπει η μεταβλητή PATH να περιέχει και το μονοπάτι /users/bob/mybin.

Κοινές μεταβλητές (LOGNAME, MAIL ) Η LOGNAME κρατά το login name του χρήστη Ορίζεται αυτόματα από το κέλυφος κατά την είσοδο του χρήστη στο σύστημα. Η MAIL κρατά το όνομα του αρχείου στο οποίο αποθηκεύονται τα e-mails που φτάνουν για το χρήστη Το κέλυφος χρησιμοποιεί αυτή τη μεταβλητή για να ειδοποιεί τον χρήστη όταν καταφθάνουν νέα μηνύματα.

Κοινές μεταβλητές (SHELL, TERM ) Κάθε φορά που ο χρήστης αλλάζει κέλυφος (π.χ. με την εντολή /bin/csh) ενημερώνεται ανάλογα και η μεταβλητή SHELL. Η TERM κρατά κάποιες πληροφορίες για τον τύπο του τερματικού που χρησιμοποιεί ο χρήστης. Αυτή η πληροφορία είναι χρήσιμη για προγράμματα όπως το vi για να προσαρμόζουν την έξοδο τους στις δυνατότητες του τερματικού.

Εμφάνιση της τιμής των μεταβλητών Το κέλυφος δίνει τη δυνατότητα στο χρήστη να χρησιμοποιεί τις τιμές των μεταβλητών μέσα σε εντολές του UNIX σαν να ήταν κανονικό κείμενο. Η αναφορά στην τιμή μιας μεταβλητής γίνεται προσθέτοντας στην αρχή του ονόματος της μεταβλητής τον χαρακτήρα "$".

Εμφάνιση της τιμής των μεταβλητών - Παράδειγμα $ cd $ΗΟΜΕ Έχει ως αποτέλεσμα να μεταφερθούμε στο home directory του χρήστη. Όταν το κέλυφος συναντήσει τον χαρακτήρα $ και μετά το όνομα μιας μεταβλητής, τα αντικαθιστά αυτόματα με την τιμή της μεταβλητής. Αν υποθέσουμε ότι το home directory είναι το /users/bob, το κέλυφος μεταφράζει την εντολή cd $HOME στην εντολή cd /users/bob.

Εμφάνιση της τιμής των μεταβλητών - echo $ echo Hallo world Hallo world $ echo $HOME /users/bob $ echo $PATH /bin/:/usr/local/bin/:/users/bob/:/users/bob/mybin/

Εμφάνιση της τιμής των μεταβλητών - set BASH=/usr/bin/bash MAKE_MODE=unix NUMBER_OF_PROCESSORS=1 OSTYPE=cygwin PATH='/usr/local/bin:/usr/bin:/bin:...:.' PROMPT='$P$G' SESSIONNAME=Console SHELL=/bin/bash TERM=cygwin

Ανάθεση τιμών σε μεταβλητές Ο χρήστης έχει τη δυνατότητα να αλλάζει τις τιμές των μεταβλητών Εκτός από αυτές που ορίζονται αυτόματα από το κέλυφος (π.χ. LOGNAME) Για να αλλάξουμε την τιμή μιας μεταβλητής, στο prompt του UNIX πληκτρολογούμε το όνομα της μεταβλητής, τον χαρακτήρα "=" και την νέα τιμή της μεταβλητής. $ TERM = vtlOO $ ΡΑΤΗ = /users/billy/mybin

Ανάθεση τιμών σε μεταβλητές – μεταβλητή PATH Οι εντολές του UNIX είναι εκτελέσιμα αρχεία που βρίσκονται σε καταλόγους, τους οποίους περιέχει αρχικά η PATH ώστε να μπορεί ο χρήστης να τις εκτελεί. Συνήθως αυτό που χρειαζόμαστε με την PATH είναι να προσθέσουμε ακόμη ένα μονοπάτι σε αυτά που ήδη περιέχει. Αυτό γίνεται χρησιμοποιώντας το $ΡΑΤΗ που μεταφράζεται στην τιμή που ήδη έχει η μεταβλητή

Ανάθεση τιμών σε μεταβλητές – μεταβλητή PATH - Παράδειγμα Για να προσθέσουμε το μονοπάτι /users/billy/mybin στην μεταβλητή PATH, κάνουμε το εξής: $ echo $PATH /bin/:/usr/local/bin/:/users/billy/ $ PATH=$PATH:/users/billy/mybin /bin/:/usr/local/bin/:/users/billy/:/users/billy/mybin

Δημιουργία μεταβλητών Για να ορίσουμε μια νέα μεταβλητή απλά της αναθέτουμε τιμή σαν να υπήρχε ήδη στο σύστημα και αυτή δημιουργείται αυτόματα. Δημιουργία μιας μεταβλητής με όνομα MYPLACE και τιμή /users/maria/documents/ $ MYPLACE=/users/maria/documents/

Συχνό Λάθος Το σημάδι $ το χρησιμοποιούμε μόνο όταν θέλουμε να χρησιμοποιήσουμε την τιμή μιας μεταβλητής και όχι για ανάθεση τιμής $ X=2 $ echo $X 2 $ $X=3 bash: 2=3: command not found

Διαγραφή μεταβλητών Με τη χρήση της εντολής unset Σύνταξη: Παράδειγμα: unset X

Το περιβάλλον Ένα υποσύνολο των μεταβλητών του κελύφους. Μία ομάδα μεταβλητών στις οποίες έχουν πρόσβαση τα προγράμματα που τρέχει ο χρήστης από το κέλυφος. Όταν ο χρήστης ζητήσει την εκτέλεση ενός προγράμματος το πρόγραμμα αυτό μπορεί να χρησιμοποιήσει τις τιμές των μεταβλητών του κελύφους που ανήκουν στο περιβάλλον, αλλά όχι και τις υπόλοιπες μεταβλητές.

Το περιβάλλον Αρχικά στο περιβάλλον δεν περιέχονται οι μεταβλητές που ορίστηκαν από τον χρήστη και αυτές στις οποίες επενέβη ο χρήστης αλλάζοντας τις τιμές τους. Όμως το κέλυφος δίνει τη δυνατότητα στον χρήστη να προσθέσει στο περιβάλλον όποια μεταβλητή επιθυμεί.

Εκτύπωση μεταβλητών περιβάλλοντος Για να τυπώσουμε τις μεταβλητές του περιβάλλοντος χρησιμοποιούμε την εντολή env. $ env HOME=/users/billie PWD=/users/billie/papers MAILRC=/users/billie/mail/.mailrc ...

Συμπερίληψη μεταβλητής στο περιβάλλον Για να «αναγκάσουμε» το UNIX να συμπεριλάβει μια μεταβλητή στο περιβάλλον, χρησιμοποιούμε την εντολή export. Η μεταβλητή PAPERS επειδή ορίστηκε από τον χρήστη δεν περιλαμβάνεται αρχικά στο περιβάλλον Η μεταβλητή PAPERS συμπεριλήφθηκε στο περιβάλλον μετά την εκτέλεση της εντολής export $ PAPERS=/users/jimmy/papers $ env HOME=/users/jimmy PWD=/users/jimmy/papers MAILRC=/users/jimmy/mail/.mailrc PATH=/usr/bin:/usr/local/bin $ export PAPERS $ env HOME=/users/jimmy PWD=/users/jimmy/papers MAILRC=/users/jimmy/mail/.mailrc PATH=/usr/bin:/usr/local/bin PAPERS=/users/jimmy/papers

Ιστορικό εντολών Η εντολή history εμφανίζει στην οθόνη τις τελευταίες εντολές που εκτέλεσε ο χρήστης στο κέλυφος. $ ls a.txt documents games $ cd games nfs3 fifa2000 $ cd .. $ history 112 ls 113 cd games 114 cd .. 115 history

Ιστορικό εντολών Ο αριθμός των εντολών που εμφανίζει η εντολή history καθορίζεται από τη τιμή της μεταβλητής HISTSIZE. Η τιμή της HISTSIZE είναι αρχικά 500 (στο CYGWIN) αλλά μπορεί να αλλάξει. $ HISTSIZE=10

Συμπλήρωση ονομάτων αρχείων Ένα πολύ βολικό χαρακτηριστικό που δίνει στο χρήστη τη δυνατότητα να εργάζεται ευκολότερα και γρηγορότερα. Σύμφωνα με αυτό, όταν ο χρήστης θέλει να πληκτρολογήσει σε μία εντολή το όνομα ενός αρχείου (π.χ. cat text1.txt) δεν χρειάζεται να πληκτρολογήσει ολόκληρο το όνομα, αλλά μόνο τους πρώτους χαρακτήρες και το πλήκτρο TAB. Το κέλυφος τότε συμπληρώνει αυτόματα τους χαρακτήρες που υπολείπονται για να ολοκληρωθεί το όνομα του αρχείου.

Συμπλήρωση ονομάτων αρχείων - Παράδειγμα $ ls Alaska California Calories Kentucky $ cat A <ΤΑΒ> ‘Ισοδυναμεί με την εντολή cat Alaska. Ένας μόνο χαρακτήρας αρκεί γιατί δεν υπάρχουν άλλα αρχεία που να ξεκινούν από A. $ cat Cali <ΤΑΒ> ‘Ισοδυναμεί με την εντολή cat California. Εδώ χρειάζονται 4 χαρακτήρες για να γίνει η διάκριση από το αρχείο Calories.

Προγραμματισμός του κελύφους Το κέλυφος εκτός από διερμηνέας εντολών εκτελεί το έργο και μιας γλώσσας προγραμματισμού στην οποία ο χρήστης μπορεί να γράψει τα δικά του προγράμματα (shell scripts) αυτοματοποιώντας κάποιες εργασίες που εκτελούνται συχνά

Προγραμματισμός του κελύφους Ένα πρόγραμμα στο κέλυφος μπορεί να: εκτελεί ένα σύνολο από εντολές του UNIX ή άλλες εφαρμογές έχει αλληλεπίδραση με το χρήστη (να τυπώνει μηνύματα στην οθόνη και να διαβάζει χαρακτήρες από το πληκτρολόγιο) δέχεται παραμέτρους κατά την εκτέλεση του αλλάζει την ροή εκτέλεσης με εντολές διακλάδωσης και επανάληψης κ.α.

Προγραμματισμός του κελύφους Προγράμματα κελύφους υπάρχουν στα περισσότερα λειτουργικά συστήματα. Τα αντίστοιχα στο DOS είναι τα batch files (.bat) Είναι λιγότερο ευέλικτα και δεν έχουν τις δυνατότητες των shell scripts του UNIX.

Κατασκευή ενός απλού προγράμματος κελύφους Ένα απλό πρόγραμμα κελύφους ομαδοποιεί ένα σύνολο από εντολές του λειτουργικού συστήματος, τις οποίες εκτελεί σειριακά. Μόλις τερματίσει και η τελευταία εντολή τερματίζει και το πρόγραμμα και ο έλεγχος επιστρέφει στο prompt του UNIX Αν το πρόγραμμα εκτελέστηκε στο προσκήνιο

Κατασκευή ενός απλού προγράμματος κελύφους - Δημιουργία Για να δημιουργήσουμε ένα πρόγραμμα κελύφους που θα εκτελεί σειριακά τις εντολές: cal, pwd και ls -la, θα πρέπει να δημιουργήσουμε ένα αρχείο κειμένου (π.χ. my_first_script.sh), με κάποιον editor το οποίο θα περιέχει 3 γραμμές με τις εντολές που θέλουμε να εκτελέσουμε cal pwd ls –la

Κατασκευή ενός απλού προγράμματος κελύφους - Δικαιώματα Στη συνέχεια, θα πρέπει να δοθούν στο αρχείο my_first_script.sh δικαιώματα εκτέλεσης ώστε να μπορεί ο χρήστης να το εκτελέσει όπως θα έκανε με οποιαδήποτε εντολή ή εφαρμογή. Για να δώσουμε στο αρχείο δικαιώματα εκτέλεσης για όλους τους χρήστες του συστήματος εκτελούμε την εντολή: $ chmod ugo+x my_first_script.sh ή $ chmod a+x my_first_script.sh

Κατασκευή ενός απλού προγράμματος κελύφους - Εκτέλεση Για να εκτελέσουμε τώρα το πρόγραμμα αρκεί να πληκτρολογούμε το όνομα του. $ my_first_script.sh Αν η μεταβλητή PATH δεν περιέχει το τρέχοντα κατάλογο, τότε πριν από το όνομα του προγράμματος πληκτρολογούμε τους χαρακτήρες "./". $./my_first_script.sh

Κατασκευή ενός απλού προγράμματος κελύφους - Αποτελέσματα Εκτελώντας το πρόγραμμα του κελύφους, με έναν από τους παραπάνω τρόπους, διαπιστώνουμε ότι η εκτέλεση του έχει τα ίδια ακριβώς αποτελέσματα που θα είχε και η σειριακή εκτέλεση των 3 εντολών: cal, pwd, ls -la

Προσθήκη αλληλεπίδρασης Όπως συμβαίνει με όλες τις γλώσσες προγραμματισμού, έτσι και το κέλυφος παρέχει στα προγράμματα κελύφους δυνατότητες αλληλεπίδρασης με το χρήστη. Δυνατότητα εκτύπωσης μηνυμάτων στην οθόνη και ανάγνωσης χαρακτήρων από το πληκτρολόγιο.

Εκτύπωση μηνυμάτων στην οθόνη Η εκτύπωση μηνυμάτων στην οθόνη του τερματικού μέσω ενός προγράμματος κελύφους, γίνεται με την εντολή echo. Η echo ακολουθείται από το μήνυμα που θέλουμε να τυπωθεί. Απλό κείμενο, π.χ. echo Hello world Μεταβλητή, οπότε η echo τυπώνει στην οθόνη τα περιεχόμενα της. Π.χ. echo $ΡΑΤΗ

Εκτύπωση μεταβλητών Για να τυπώσουμε τα περιεχόμενα μιας μεταβλητής με την εντολή echo, θα πρέπει πριν από το όνομα της μεταβλητής να προσθέσουμε τον χαρακτήρα $. Η echo PATH τυπώνει τη λέξη PATH Η echo $PATH τυπώνει τα περιεχόμενα της μεταβλητής με όνομα PATH

Ανάγνωση χαρακτήρων Η ανάγνωση χαρακτήρων από το πληκτρολόγιο γίνεται με την εντολή read. Σύνταξη: read Μεταβλητή Μεταβλητή είναι το όνομα μιας μεταβλητής (νέας ή υπάρχουσας), στην οποία αποθηκεύεται η συμβολοσειρά (string) που πληκτρολογεί ο χρήστης. read NAME

Παράδειγμα Εισόδου/Εξόδου Πρόγραμμα κελύφους, το οποίο θα ζητάει από το χρήστη να πληκτρολογήσει μία εντολή του UNIX και το όνομα ενός αρχείου και θα εκτελεί την εντολή ανακατευθύνοντας τα αποτελέσματα της στο αρχείο που όρισε ο χρήστης

Πρόγραμμα κελύφους echo Please type a command: read COM echo Now type the name of a file: read FN $COM > $FN Τοποθετούμε στη μεταβλητή COM αυτά που θα πληκτρολογήσει ο χρήστης Τυπώνουμε ένα προτρεπτικό μήνυμα Τυπώνουμε ένα προτρεπτικό μήνυμα Εκτελούμε την εντολή που υπάρχει στην μεταβλητή COM και ανακατευθύνουμε την έξοδο της στο αρχείο που υπάρχει στη μεταβλητή FN Τοποθετούμε στη μεταβλητή FN αυτά που θα πληκτρολογήσει ο χρήστης

Παραμετροποίηση των προγραμμάτων κελύφους Ένα πρόγραμμα κελύφους μπορεί να δέχεται είσοδο από το πληκτρολόγιο και έτσι να παραμετροποιείται η λειτουργία του. Ένας εναλλακτικός τρόπος, είναι η προσθήκη παραμέτρων (ή ορισμάτων) στο prompt του UNIX κατά την εκτέλεση του προγράμματος. Π.χ. εντολή ls Πρόγραμμα γραμμένο στη γλώσσα προγραμματισμού C, το οποίο μπορεί να δέχεται παραμέτρους κατά την εκτέλεση του (π.χ. ls -la).

Παραμετροποίηση των προγραμμάτων κελύφους Όταν εκτελούμε ένα πρόγραμμα στο UNIX αυτόματα το κέλυφος δημιουργεί ένα σύνολο από μεταβλητές στις οποίες δίνει ως τιμή το όνομα της εντολής που εκτελέσαμε και τις παραμέτρους, οι οποίες συνοδεύουν την εντολή. Τις μεταβλητές αυτές μπορούμε να τις χρησιμοποιούμε μέσα στα scripts και έτσι να τα παραμετροποιούμε χωρίς να χρειάζεται καμία επιπλέον διεργασία από μέρους μας.

Παραμετροποίηση των προγραμμάτων κελύφους Τα ονόματα αυτών των μεταβλητών είναι: 0 για το όνομα της εντολής, 1 για το πρώτο όρισμα, 2 για το δεύτερο όρισμα κ. ο. κ. $ grep Hallo greetings.txt Το κέλυφος αυτόματα δημιουργεί 3 μεταβλητές με ονόματα τους αριθμούς από το 0 μέχρι το 2 και αναθέτει τις τιμές: 0 = grep 1 = Hallo 2 = greetings.txt

Παραλλαγή Παραδείγματος Κελύφους Το όνομα της εντολής και το όνομα του αρχείου δεν διαβάζονται από το πληκτρο-λόγιο την ώρα της εκτέλεσης, αλλά περνιού-νται ως παράμετροι στο prompt του UNIX. Το πρώτο όρισμα του προγράμματος περιέχει το όνομα της εντολής και το δεύτερο το όνομα του αρχείου Το πρόγραμμα απλοποιείται στην εντολή: $1 > $2 Έστω rd.sh το αρχείο στο οποίο αποθηκεύεται το script

Παραλλαγή Παραδείγματος Κελύφους - Πρόβλημα Θέλουμε να εκτελέσουμε την εντολή ls -la: $ rd.sh ls –la out.txt Δεν θα έχει τα αναμενόμενα αποτελέσματα. Το κενό ανάμεσα στην λέξη ls και στη -la ερμηνεύεται ως αλλαγή παραμέτρου Ανάθεση τιμών στις μεταβλητές: 0 = rd.sh 1 = ls 2 = -la 3 = out.txt Το πρόγραμμα θα εκτελέσει την εντολή ls και θα ανακατευθύνει τα αποτελέσματα της σε ένα αρχείο με όνομα '-la'

Παραλλαγή Παραδείγματος Κελύφους - Λύση Τοποθέτηση της εντολής ls –la μέσα σε εισαγωγικά, έτσι ώστε το κέλυφος να την ερμηνεύσει ως μία συμβολοσειρά. $ rd.sh ‘ls –la’ out.txt Ανάθεση τιμών: 0 = rd.sh 1 = ls –la 2 = out.txt Η εντολή $1 > $2 που περιέχεται στο script, αντικαθίσταται κατά την εκτέλεση με την ls –la > out.txt

Διακλάδωση Υπάρχουν εντολές με τις οποίες μπορούμε να τροποποιούμε την ροή εκτέλεσης του προγράμματος αν συμβεί κάποιο γεγονός. Οι εντολές που επιτρέπουν διακλαδώσεις στη ροή εκτέλεσης του προγράμματος κελύφους είναι η if και η case.

Εντολή if – Σύνταξη - Σημασία then ομάδα εντολών 1 else ομάδα εντολών 2 fi Αρχικά εκτελείται η εντολή 1. Αν το αποτέλεσμα είναι επιτυχές (επιστροφή αριθμού 0), τότε εκτελούνται οι εντολές της ομάδας εντολών 1. Αν το αποτέλεσμα δεν είναι επιτυχές (επιστροφή κάποιου άλλου αριθμού), τότε εκτελείται η ομάδα εντολών 2.

Εντολή if – Εναλλακτικά Το τμήμα else της if μπορεί να παραλειφθεί, οπότε η εντολή απλοποιείται στην: if εντολή 1 then ομάδα εντολών 1 fi Αν η εντολή 1 εκτελεστεί επιτυχώς, εκτελείται και η ομάδα εντολών 1 Στην αντίθετη περίπτωση η ομάδα εντολών 1 παραλείπεται.

Εντολή if – Παράδειγμα 1 Το ακόλουθο script στέλνει το αρχείο results στον χρήστη nick μέσω email Αν η αποστολή του μηνύματος είναι επιτυχής, διαγράφει το αρχείο results από το δίσκο: if mail nick < results then rm –f results echo Η αποστολή του μηνύματος ήταν επιτυχής! else echo Αδυναμία αποστολής του μηνύματος! fi

Λογικές Συνθήκες Πολλές φορές επιθυμούμε να αλλάζει η ροή εκτέλεσης ανάλογα με τη τιμή κάποιας λογικής πρότασης και όχι ανάλογα με την έκβαση της εκτέλεσης κάποιας εντολής. Π.χ. A > 5 ή ΝΑΜΕ = ‘Peter’ Υπάρχει στο UNIX η εντολή test η οποία ελέγχει την συνθήκη που την ακολουθεί Τερματίζει επιτυχώς (επιστρέφει 0) αν η συνθήκη είναι αληθής Αλλιώς επιστρέφει 1 (ανεπιτυχής) Ο έλεγχος που ακολουθεί την εντολή test μπορεί να είναι αριθμητικός, αλφαριθμητικός ή έλεγχος αρχείων

Αριθμητικοί έλεγχοι Έλεγχος Αληθεύει αν Παράδειγμα N1 –eq N2 Ν1=Ν2 test $NUM –eq 0 N1 –ne N2 Ν2≠Ν2 test $NUM –ne $NUM2 N1 –gt N2 Ν1>Ν2 test $NUM –gt 1000 N1 –ge N2 Ν1≥Ν2 test $NUM –ge 10 N1 –lt N2 Ν1<Ν2 test $NUM –lt 30 N1 –le N2 Ν1≤Ν2 test $NUM –le 0

Αλφαριθμητικοί έλεγχοι Έλεγχος Αληθεύει αν Παράδειγμα –z S1 Το μέγεθος του S1 είναι 0 test –z $NUM -n S1 Το μέγεθος του S1 δεν είναι 0 test –n $1 S1 = S2 Το S1 είναι ίδιο με το S2 test $1 = ‘Hallo’ S1 != S2 Το S1 διαφέρει από το S2 test $1 != $2 S Το S δεν είναι το κενό string test $3

Έλεγχοι αρχείων Έλεγχος Αληθεύει αν Παράδειγμα -a FILE Το FILE υπάρχει test –a mydocs.txt -r FILE Το FILE μπορεί να διαβαστεί test –r mydocs.txt -w FILE Το FILE μπορεί να τροποποιηθεί test –w mydocs.txt -x FILE Το FILE μπορεί να εκτελεστεί test –x mydocs.txt -f FILE Το FILE είναι αρχείο test –f $1 -d FILE Το FILE είναι κατάλογος test –d $1 -h FILE Το FILE είναι σύνδεσμος test –h $1 -s FILE Το μέγεθος του FILE είναι μεγαλύτερο από το 0 test –s $2

Εντολή if – Παράδειγμα 2 Το ακόλουθο script δέχεται σαν παράμετρο το όνομα ενός αρχείου και έναν αριθμό Ταξινομεί το αρχείο με αλφαβητική σειρά αν ο αριθμός είναι 1 και με αντίστροφη αλφαβητική σειρά αν ο αριθμός είναι 2.

Εντολή if – Παράδειγμα 2 if test –a $1 then if test $2 –eq 1 sort $1 > temp rm –f $1 mv temp $1 else if test $2 –eq 2 sort –r $1 > temp echo Το δεύτερο όρισμα πρέπει να είναι 1 ή 2! fi echo Το αρχείο δεν υπάρχει Υπάρχει το αρχείο – 1η παράμετρος? Μετονόμασε το αρχείο temp στο όνομα του αρχείου-1ης παραμέτρου Η 2η παράμετρος είναι ίση με 1? Ταξινόμησε το αρχείο-1η παράμετρο και αποθήκευσε στο αρχείο temp Σβήσε το αρχείο-1η παράμετρο Η 2η παράμετρος είναι ίση με 2? Ταξινόμησε το αρχείο με ανάστροφη σειρά, κ.ο.κ. Λάθος τιμή για την 1η παράμετρο Λάθος τιμή για την 2η παράμετρο

Σύνθετοι Έλεγχοι Η εντολή test μπορεί να δεχτεί εκτός από απλούς ελέγχους (π.χ. test $N –eq 0) και σύνθετες λογικές παραστάσεις που περιέχουν τελεστές σύζευξης (&&) και διάζευξης (¦¦). test $N –gt 0 && test $N –le 10 Επιστρέφει 0 αν η μεταβλητή N κυμαίνεται στο διάστημα (0,10] και 1 αν όχι.

Παράδειγμα Ουράς Εκτύπωσης Όταν βγαίνουμε με CTRL-C από το πρόγραμμα print-queue, τα περιεχόμενα του αρχείου pqueue.log μένουν αναλλοίωτα Την επόμενη φορά που εκτελείται το print-queue ξανατυπώνονται τα ίδια αρχεία Λύση: Χρήση script

Script για την ουρά εκτύπωσης Αρχείο pqueue.sh print-queue if test -a pqueue.log then rm pqueue.log fi Εκτέλεση του προγράμματος Αν υπάρχει το αρχείο pqueue.log, τότε σβήνεται Όταν τερματιστεί η εκτέλεση (έστω και με CTRL-C) ο έλεγχος εκτέλεσης επιστρέφει στο script

Επανάληψη Ένας δεύτερος τρόπος αλλαγής της ροής εκτέλεσης ενός προγράμματος είναι με τη χρήση εντολών επανάληψης. Μπορούμε μέσα σε ένα script να εκτελούμε ένα σύνολο από εντολές περισσότερες της μία φορές. Οι εντολές αυτές είναι η for, η while και η until.

Εντολή for Υπάρχουν δύο τρόποι χρήσης της εντολής for: α) Με ορισμένο σύνολο τιμών β) Με τις παραμέτρους εκτέλεσης

for με ορισμένο σύνολο τιμών for μεταβλητή in σύνολο do Ομάδα εντολών done Η ομάδα εντολών θα εκτελεστεί τόσες φορές όσο είναι το μέγεθος του συνόλου. Π.χ., εκτύπωση των άρτιων αριθμών 0 - 10 for I in 0 2 4 6 8 10 echo Αριθμός $I Αριθμός 0 Αριθμός 2 Αριθμός 4 Αριθμός 6 Αριθμός 8 Αριθμός 10 Εκτύπωση

Χρήση wildcards στην for for X in *.txt do echo File: $X cat $X done Εκτύπωση στην οθόνη όλων των txt αρχείων

for με τις παραμέτρους εκτέλεσης do Ομάδα εντολών done Οι τιμές της μεταβλητής είναι αυτές των παραμέτρων με τις οποίες έγινε η κλήση στο script ($1, $2 κ.τ.λ.). Οποιαδήποτε μεταβλητή!

Μπορεί να αντικατασταθεί με οποιοδήποτε όνομα μεταβλητής! for - Παράδειγμα Έστω ότι έχουμε ένα script με όνομα sort_file, το οποίο ταξινομεί ένα αρχείο Θέλουμε να κατασκευάσουμε ένα άλλο script (με όνομα multi_sort) το οποίο θα δέχεται σαν παραμέτρους πολλά ονόματα αρχείων και θα τα ταξινομεί: for FILE do sort_file $FILE 1 done Μπορεί να αντικατασταθεί με οποιοδήποτε όνομα μεταβλητής!

for - Παράδειγμα Αν εκτελέσουμε την εντολή: $ multi_sort a.txt b.txt test2.txt θα εκτελεστούν διαδοχικά οι εντολές: $ sort_file a.txt 1 $ sort_file b.txt 1 $ sort_file test2.txt 1

Εντολή while Η σύνταξη της εντολής while είναι: while εντολή1 do ομάδα εντολών 1 done Η εντολή while εκτελεί την ομάδα εντολών 1 επαναληπτικά μέχρι η εκτέλεση της εντολής 1 να αποτύχει (να επιστρέψει δηλαδή τιμή <> 0).

Εντολή until Η σύνταξη της εντολής until είναι: until εντολή1 do ομάδα εντολών 1 done Η εντολή until εκτελεί την ομάδα εντολών 1 μέχρι η εκτέλεση της εντολής 1 να επιτύχει.

Μέτρηση Συχνότητας Εμφάνισης Λέξεων σε Κείμενο – Παραλλαγή 6 Βασίζεται στην Παραλλαγή 5 Διαβάζει ένα αρχείο κειμένου στην είσοδο και αποθηκεύει τα αποτελέσματα σε ένα δυαδικό αρχείο εξόδου Π.χ. cw txt1.txt out.dat Αν το αρχείο εξόδου υπάρχει ήδη, τότε οι λέξεις προστίθενται στις ήδη υπάρχουσες και τα συνολικά αποτελέσματα αποθηκεύονται ξανά στο αρχείο εξόδου Θέλουμε να έχουμε τη δυνατότητα καθορισμού πολλαπλών αρχείων κειμένου με wildcards Π.χ. cw *.txt out.dat

Δημιουργία script Δημιουργούμε το αρχείο cw.sh: for FILE in $1 do cw5 $FILE $2 done display $2 Αλλάζουμε τα permissions: $ chmod a+x cw.sh Η 1η παράμετρος αντιπροσωπεύει σύνολο αρχείων Χρησιμοποιούμε την 5η παραλλαγή Εκτυπώνουμε το συγκεντρωτικό αρχείο

Εκτέλεση script Εκτελούμε: $ cw.sh “*.txt” out.dat Η ακόλουθη κλήση: Είναι απαραίτητα τα διπλά quotes γιατί αλλιώς θα γίνει μετατροπή των wildcards στο αντίστοιχο σύνολο αρχείων στην γραμμή διαταγών και όχι μέσα στο script Η ακόλουθη κλήση: $ cw.sh *.txt out.dat είναι ισοδύναμη με: $ cw.sh file1.txt ... filen.txt out.dat

Αρχεία batch σε Command Window σε λειτουργικό Microsoft Windows Το προηγούμενο παράδειγμα σε MS-Windows αρχείο batch θα γραφόταν ως εξής: for %%x in ( %1 ) do cw5 %%x %2 display %2 Το αρχείο θα ονομαζόταν cw.bat Δεν χρειάζεται αλλαγή δικαιωμάτων για εκτέλεση στα Windows Το ότι είναι εκτελέσιμο καθορίζεται από την επέκταση .bat

Διαφορές batch files από script files Οι μεταβλητές υποδηλώνονται με τον χαρακτήρα % αντί του $ Οι παράμετροι της γραμμής εντολών υποδηλώνονται με %1, %2, ... Οι μεταβλητές της FOR χρειάζονται %% (π.χ. %%x) Οι μεταβλητές περιβάλλοντος χρειάζονται % πριν ΚΑΙ ΜΕΤΑ το όνομα της μεταβλητής (π.χ. %PATH%)

Παράδειγμα μεταβλητής περιβάλλοντος C:\>echo %PATH% C:\Program Files\Common Files\Roxio Shared\DLLShared;C:\DJGPP\BIN;C:\Program Files\Microsoft Visual Studio\Common\MSDev98\Bin;C:\Program Files\Microsoft Visual Studio\Common\Tools;C:\Program Files\Microsoft Visual Studio\VC98\bin;C:\BC5\BIN;C:\Program Files\Java\j2re1.4.2_06\bin;C:\BC5\BIN;

Μεταβλητές περιβάλλοντος Τις βλέπουμε όπως και στο Unix με set Θέτουμε τιμή στην μεταβλητή set x=3 Βλέπουμε την τιμή της μεταβλητής set x ή echo %x% Την διαγράφουμε set x=

Απεικόνιση εντολών batch file echo off for %%x in ( %1 ) do cw5 %%x %2 display %2

Απεικόνιση εντολών batch file Η εκτέλεση της εντολή echo off θα εμφανιστεί στην οθόνη! Αν θέλουμε η εκτέλεση του batch file να είναι εντελώς «αόρατη» τότε πρέπει να βάλουμε πριν από το echo off τον χαρακτήρα @ @echo off for %%x in ( %1 ) do cw5 %%x %2 display %2

Απεικόνιση εντολών batch file Ο χαρακτήρας @ μπορεί να μπει μπροστά από οποιαδήποτε εντολή δεν θέλουμε να εμφανίζεται Μπορούμε να μην εμφανίζουμε εντολές επιλεκτικά @for %%x in ( %1 ) do cw5 %%x %2 display %2

Λήψη Αποφάσεων Υπάρχει η εντολή IF-THEN Προαιρετικό Αντιστρέφει τη λογική τιμή Υπάρχει η εντολή IF-THEN IF [NOT] ERRORLEVEL number command Εκτελείται όταν η προηγούμενη εντολή επέστρεψε κωδικό εξόδου ίσο ή μεγαλύτερο από number IF [NOT] string1==string2 command Εκτελείται όταν τα δύο strings (μεταβλητές ή σταθερές) είναι ίσα μεταξύ τους IF [NOT] EXIST filename command Εκτελείται όταν το αρχείο filename υπάρχει

Batch για την ουρά εκτύπωσης Αρχείο pqueue.bat print-queue if EXIST pqueue.log del pqueue.log Εκτέλεση του προγράμματος Αν υπάρχει το αρχείο pqueue.log, τότε σβήνεται Όταν τερματιστεί η εκτέλεση (έστω και με CTRL-C) ο έλεγχος εκτέλεσης επιστρέφει στο script

Διαφορά με UNIX Όταν πατηθεί CTRL-C για να τερματιστεί το print-queue.exe, το λειτουργικό σύστημα «κρατάει» την εντολή διακοπής εκτέλεσης και για το batch file Ρωτάει τον χρήστη αν θέλει να διακόψει την εκτέλεση του batch file Αν ο χρήστης απαντήσει yes τότε δεν θα εκτελεστούν οι εντολές που βρίσκονται μετά από το αρχείο που διακόπηκε Αν απαντήσει no τότε η εκτέλεση του batch συνεχίζεται κανονικά

Οθόνη ^CTerminate batch job (Y/N)? n

Εντολή pause Σταματάει την εκτέλεση ενός batch file και περιμένει το πάτημα ενός πλήκτρου από τον χρήστη για να συνεχίσει Τυπώνει και το ανάλογο μήνυμα: Press any key to continue . . .

Εντολή pause - Παράδειγμα for %%x in ( %1 ) do cw5 %%x %2 echo I will display the result pause display %2 Στην οθόνη: C:\>cw.bat text*.txt out.dat I will display the result Press any key to continue . . . 1 Aristotle 3 CLIPS ...

Σχόλια Για σχόλια μέσα σε batch files χρησιμοποιούμε την εντολή rem rem The following starts the queue print-queue rem The following deletes the log if EXIST pqueue.log del pqueue.log

Εντολή goto Μέσα στα batch files μπορούν να οριστούν labels που σηματοδοτούν κάποια κομβικά σημεία του προγράμματος Με την εντολή goto label μπορούμε να μεταφέρουμε την εκτέλεση του batch file σε αυτά τα σημεία

Εντολή goto – Παράδειγμα if EXIST %1 goto continue echo File %1 does not exist! goto end :continue if %2==1 goto 1 if %2==2 goto 2 echo 2nd arg must be 1 or 2! :1 sort %1 > temp del %1 rename temp %1 :2 sort –r %1 > temp :end Υπάρχει το αρχείο – 1η παράμετρος? Μεταφορά εκτέλεσης στο τέλος Μεταφορά εκτέλεσης αν όλα OK Η 2η παράμετρος είναι ίση με 1? Λάθος τιμή για την 1η παράμετρο Η 2η παράμετρος είναι ίση με 2? Μεταφορά εκτέλεσης στο τέλος Ταξινόμησε το αρχείο-1η παράμετρο και αποθήκευσε στο αρχείο temp Μεταφορά εκτέλεσης αν είναι 1 Σβήσε το αρχείο-1η παράμετρο Μετονόμασε το αρχείο temp στο όνομα του αρχείου-1ης παραμέτρου Μεταφορά εκτέλεσης στο τέλος Ταξινόμησε το αρχείο με ανάστροφη σειρά, κ.ο.κ. Μεταφορά εκτέλεσης αν είναι 2 Λάθος τιμή για την 2η παράμετρο

Κλήση batch από batch Μέσα από ένα batch file μπορούμε να καλέσουμε ένα άλλο batch Ο έλεγχος εκτέλεσης μεταφέρεται από το ένα στο άλλο Για να επιστραφεί η εκτέλεση πίσω στο 1ο batch, όταν το 2ο batch τερματίσει, πρέπει η κλήση να γίνει με την εντολή call

Παράδειγμα call - 1 Αρχείο test-1.bat: echo Before 2nd batch test-2 echo After 2nd Αρχείο test-2.bat: echo In 2nd batch Οθόνη c:\>test-1 Before 2nd batch In 2nd batch

Παράδειγμα call - 2 Αρχείο test-1.bat: echo Before 2nd batch echo After 2nd Αρχείο test-2.bat: echo In 2nd batch Οθόνη c:\>test-1 Before 2nd batch In 2nd batch After 2nd

Αρχεία batch files των Windows Αν και έχουν αρκετές δυνατότητες, δεν φτάνουν με τίποτα την εκφραστικότητα και ευελιξία των γλωσσών script για το Unix Λείπουν εντολές επανάληψης με συνθήκη τερματισμού, αριθμητικές πράξεις, είσοδος δεδομένων από το πληκτρολόγιο, κ.ά.