Λειτουργικά. Συστήματα Ι. Φ ρ ο ν τ ι σ τ ή ρ ι ο. Αριστείδης Ηλίας. Εργαστήριο Ηλεκτρονικών Υπολογιστών

Σχετικά έγγραφα
ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ Ι

Shell Scripts: loops / if / test

ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ I

Μερικές άλλες χρήσιμες εντολές

Διάλεξη 1. Πράξεις Τελεστές Έλεγχος Ροής

ΑΣΚΗΣΗ 2 -ΑΚΥΡΩΣΗ ΣΗΜΑΣΙΑΣ ΕΙΔΙΚΩΝ ΧΑΡΑΚΤΗΡΩΝ

Εισαγωγή στον Προγραμματισμό

Ανάπτυξη και Σχεδίαση Λογισμικού

ΕισαγωγήστουςΗ/Υ. PHP Hypertext Preprocessor

Μερικές άλλες χρήσιμες εντολές

Διαδικασιακός Προγραμματισμός

ΠΑΝΕΠΙΣΤΗΜΙΟ AΙΓΑIΟΥ & ΑΕΙ ΠΕΙΡΑΙΑ Τ.Τ. Τμήματα Ναυτιλίας και Επιχειρηματικών Υπηρεσιών & Μηχ. Αυτοματισμού ΤΕ. Εισαγωγή στη Python

Λειτουργικά Συστήματα

Εισαγωγή στην Επιστήμη Υπολογιστών. Εισαγωγή στην Python

Στόχοι και αντικείμενο ενότητας. Εκφράσεις. Η έννοια του τελεστή. #2.. Εισαγωγή στη C (Μέρος Δεύτερο) Η έννοια του Τελεστή

Βασικοί τύποι δεδομένων (Pascal) ΕΠΑ.Λ Αλίμου Γ Πληροφορική Δομημένος Προγραμματισμός (Ε) Σχολ. Ετος Κων/νος Φλώρος

Εισαγωγή στα Λειτουργικά Συστήματα

Η γλώσσα προγραμματισμού Strange

ΕΠΛ 012. JavaScripts

ΕΝΟΤΗΤΑ 4 Λήψη Αποφάσεων και Συναρτήσεις Ελέγχου

Εισαγωγή στη Matlab 2 Εισαγωγή στην Αριθμητική Ανάλυση Διδάσκων: Γεώργιος Ακρίβης Βοηθός: Δημήτριος Ζαβαντής

Π. Σταθοπούλου ή Οµάδα Α (Φοιτητές µε µονό αριθµό Μητρώου ) ιδασκαλία : Παρασκευή 11πµ-13µµ ΗΛ7

Λειτουργικά Συστήματα. Άσκηση Πράξη. Shell Programming

Δομημένος Προγραμματισμός

Δομημένος Προγραμματισμός (ΤΛ1006)

Δομημένος Προγραμματισμός. Τμήμα Επιχειρηματικού Σχεδιασμού και Πληροφοριακών Συστημάτων

ΧΑΡΟΚΟΠΕΙΟ ΠΑΝΕΠΙΣΤΗΜΙΟ

Λειτουργικά Συστήματα. Shell Programming

Σύντομες εισαγωγικές σημειώσεις για την. Matlab

Λύβας Χρήστος Αρχική επιµέλεια Πιτροπάκης Νικόλαος και Υφαντόπουλος Νικόλαος

ΗΥ-150. Προγραμματισμός

ΗΥ-150. Προγραμματισμός

a = 10; a = k; int a,b,c; a = b = c = 10;

Εφαρμοσμένη Πληροφορική ΙΙ (Θ) Είσοδος/Έξοδος Μεταβλητές Τύποι Μεταβλητών Τελεστές και Προτεραιότητα Μετατροπές Μεταξύ Τύπων

Η γλώσσα προγραμματισμού EEL

Εργαστήριο Λειτουργικών Συστημάτων. Shell Programming

Προγραμματισμός Ι (ΗΥ120)

Δυναμικές Ιστοσελίδες Εισαγωγή στην Javascript για προγραμματισμό στην πλευρά του client

ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΥΠΟΛΟΓΙΣΤΩΝ & ΥΠΟΛΟΓΙΣΤΙΚΗ ΦΥΣΙΚΗ

ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ II. Υφαντόπουλος Νικόλαος Υποψήφιος Διδάκτορας Contact:

Τμήμα Πληροφορικής & Επικοινωνιών Δρ. Θεόδωρος Γ. Λάντζος

Αβδέλαρου Κωνσταντίνα

ΟΛΑ ΤΑ SCRIPT files πρέπει να είναι ΕΚΤΕΛΕΣΙΜΑ: $*, : ΟΛΑ - Η λίστα (ο πίνακας) με τα ορίσματα $# πλήθος παραμέτρων. one two third parameter

ΒΑΣΙΚΟΙ ΤΥΠΟΙ ΔΕΔΟΜΕΝΩΝ

Εισαγωγή στην Επιστήμη Υπολογιστών. Εισαγωγή στην Python

Προγραμματισμός Ι (ΗΥ120)

Λειτουργικά Συστήματα

ΓΛΩΣΣΑ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ PASCAL

Προγραμματισμός Ι (HY120)

2.1. Εντολές Σχόλια Τύποι Δεδομένων

Προγραμματισμός και Χρήση Ηλεκτρονικών Υπολογιστών - Βασικά Εργαλεία Λογισμικού

ικτυακά Πολυμέσα Ι (Β Έτος, 3ο εξ) ιάλεξη #8η: Javascript: Τεχνικές εντοπισμού/διόρθωσης λαθών, τελεστές, δομές ελέγχου, βρόχοι επανάληψης

Μέρος 2 Κατασκευή Συντακτικού Αναλυτή

Πληρουορική Γ Γσμμασίοσ

Εισαγωγή στην PHP. ΕΣΔ 516 Τεχνολογίες Διαδικτύου. Περιεχόμενα. Περιεχόμενα. ΕΣ 516: Τεχνολογίες ιαδικτύου. ΕΣ 516: Τεχνολογίες ιαδικτύου

Είδη εντολών. Απλές εντολές. Εντολές ελέγχου. Εκτελούν κάποια ενέργεια. Ορίζουν τον τρόπο με τον οποίο εκτελούνται άλλες εντολές

ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ Ι

ΗΥ-150. Προγραµµατισµός. Εντολές Ελέγχου Ροής

Αντίρριο, 14/03/2017 Προδιαγραφές Εργαστηριακής Εργασίας για το μάθημα «Μεταγλωττιστές»

Προγραμματισμός I (Θ)

Εισαγωγή στην Αριθμητική Ανάλυση

Χρονικές σειρές 1 ο μάθημα: Εισαγωγή στη MATLAB

ΠΛΗΡΟΦΟΡΙΚΗ Ι JAVA Τμήμα θεωρίας με Α.Μ. σε 3, 7, 8 & 9 8/11/07

Γραφικά υπολογιστών Εργαστήριο 1 Εισαγωγή στην Python

PERL. Δήμος Παύλου Δημήτρης Κουζαπάς

Δομές ελέγχου ροής προγράμματος

Προγραμματισμός Η/Υ. Ενότητα 2β: Εισαγωγή στη C (Μέρος Δεύτερο)

Pascal, απλοί τύποι, τελεστές και εκφράσεις

Εργαστήριο 6 Ασκήσεις: To Εργαλείo Ωφελιμότητας Awk Προγραμματισμός Κελύφους Bash

Ερωτήσεις πολλαπλής επιλογής - Κεφάλαιο 2. Α1. Ο αλγόριθμος είναι απαραίτητος μόνο για την επίλυση προβλημάτων πληροφορικής

wc -l <file1 10 ή να μετρήσω πόσες γραμμές δίνει μια οποιαδήποτε άλλη εντολή π.χ. η finger : finger wc -l 8

ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΜΑΘΗΜΑ 3 Ο. Σταθερές-Παράμετροι-Μεταβλητές Αριθμητικοί & Λογικοί Τελεστές Δομή ελέγχου-επιλογής Σύνθετοι έλεγχοι

Εισαγωγή στην γλώσσα προγραμματισμού C

Εισαγωγή στον Προγραµµατισµό. Διάλεξη 3 η : Επίλυση Προβληµάτων Χειµερινό Εξάµηνο 2011

Διάλεξη 2. Μεταβλητές - Δομές Δεδομένων - Eίσοδος δεδομένων - Έξοδος: Μορφοποίηση - Συναρτήσεις. Διοργάνωση : ΚΕΛ ΣΑΤΜ

ΤΕΙ ΔΥΤΙΚΗΣ ΕΛΛΑΔΑΣ Τµήµα Μηχανικών Πληροφορικής ΤΕ Λειτουργικά Συστήµατα (Εργαστήριο) Διδάσκων: I. Τσακνάκης. 7ο Εργαστήριο

Στόχοι και αντικείμενο ενότητας. Προτάσεις επανάληψης. Έλεγχος ροής προγράμματος. #5.. Εντολές Επανάληψης

Προγραμματισμός Ι. Προεπεξεργαστής. Δημήτρης Μιχαήλ. Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο

Εισαγωγή στην C. Μορφή Προγράµµατος σε γλώσσα C

Αλγοριθμική & Δομές Δεδομένων- Γλώσσα Προγραμματισμού Ι (PASCAL)

ΠΕΡΙΕΧΟΜΕΝΑ ΜΕΡΟΣ I. 1. Εισαγωγή 3 ΠΡΟΛΟΓΟΣ

Σκοπός. Προγραμματίζοντας τον Arduino ΙΙ Εντολή Εκχώρησης & Εντολές. Συλλογή & Επεξεργασία Δεδομένων. Πρόγραμμα. Εντολές Επεξεργασίας Δεδομένων

Διάλεξη 3η: Τύποι Μεταβλητών, Τελεστές, Είσοδος/Έξοδος

Εισαγωγή στον Προγραµµατισµό. Διάλεξη 2 η : Βασικές Έννοιες της γλώσσας προγραµµατισµού C Χειµερινό Εξάµηνο 2011

ιαδικαστικός Προγραμματισμός

Εντολές ελέγχου ροής if, for, while, do-while

Γιάννης Σαμωνάκης. 1 ο ΣΧΟΛΕΙΟ ΚΩΔΙΚΑ «Βασικά Θέματα Προγραμματισμού στην Ανάπτυξη Δυναμικών Διαδικτυακών Εφαρμογών» (Part 4 - PHP)

Τυπικές χρήσεις της Matlab

ΚΕΦΑΛΑΙΟ 3. Εκφράσεις, τελεστές, σχόλια. 3.1 Εισαγωγή

Ανάπτυξη Εφαρμογών σε Προγραμματιστικό Περιβάλλον. Εκχώρηση Τιμών

Εισαγωγή στον Προγραμματισμό

Εισαγωγή στην Tcl. Τί είναι η Tcl;

Γ τάξη Τεχνολογικής Κατεύθυνσης Ενιαίου Λυκείου ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ. ΔΟΜΗ ΕΠΙΛΟΓΗΣ Διδάσκων: ΔΟΥΡΒΑΣ ΙΩΑΝΝΗΣ

Αντικειμενοστρεφής Προγραμματισμός Διάλεξη 2 : ΜΕΤΑΒΛΗΤΕΣ ΤΕΛΕΣΤΕΣ & ΕΚΦΡΑΣΕΙΣ ΕΛΕΓΧΟΣ ΡΟΗΣ

Προγραμματισμός Ηλεκτρονικών Υπολογιστών 2 - Εργαστήριο

Αλγοριθμική & Δομές Δεδομένων- Γλώσσα Προγραμματισμού Ι (PASCAL) (PASCAL ) Εντολές Ελέγχου & Επανάληψης

Βασικές Αρχές Προγραμματισμού

ΕΠΛ 231 Δομές Δεδομένων και Αλγόριθμοι 4-1

Στοιχειώδης προγραμματισμός σε C++

ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ I

Transcript:

Λειτουργικά Αριστείδης Ηλίας Συστήματα Ι Φ ρ ο ν τ ι σ τ ή ρ ι ο Shell Scripting

Εισαγωγή Ένα shell script είναι μια λίστα εντολών που εκτελούνται ακολουθιακά Εκτελούνται ανάλογα με το κέλυφος και για το Bash Παράδειγμα vim script1.sh #!/bin/bash #!/bin/bash echo "hello, $USER. I wish to list some files of yours" echo "listing files in the current directory, $PWD" ls # list files To κάνουμε εκτελέσιμο και το εκτελούμε chmod u+x script1.sh./script1.sh USER και PWD είναι ειδικές μεταβλητές που παρέχει το σύστημα (με env εμφανίζονται όλες)

Μεταβλητές Χρήστη Μπορείτε να χρησιμοποιήσετε τις μεταβλητές, όπως σε άλλες γλώσσες προγραμματισμού. Δεν υπάρχουν τύπους δεδομένων. Μια μεταβλητή στο Bash μπορεί να περιέχει έναν αριθμό, έναν χαρακτήρα, μια σειρά χαρακτήρων. Δεν έχετε ανάγκη να δηλώσουμε μια μεταβλητή, μόνο με την εκχώρηση μιας τιμής αναφοράς τους και θα δημιουργηθούν. Οι τοπικές μεταβλητές μπορεί να δημιουργηθεί χρησιμοποιώντας τη λέξη-κλειδί local.

Σχόλια #

Μεταβλητές Χρήστη Μια μεταβλητή χρήστη ορίζεται ως X="hello" (προσοχή, χωρίς spaces) Ανακτάται (καλείται) ως $Χ Παράδειγμα.bash_profile vim.bash_profile hname=`hostname` echo "Welcome on $hname. echo -e "Kernel Details: " `uname -smr` echo -e "`bash --version`" echo -ne "Uptime: "; uptime echo -ne "Server time : "; date Με backticks, μπορεί να τοποθετηθεί το αποτέλεσμα μιας εντολής σε μεταβλητή

Τελεστές Αριθμητικοί Σχεσιακοί Λογικοί Αλφαριθμητικών Ελέγχου αρχείων

Τελεστές Αριθμητικός Τελεστής Περιγραφή Παράδειγμα Χρήσης (για a=10 και b=20) + Πρόσθεση `expr $a + $b` θα δώσει 30 - Αφαίρεση `expr $a - $b` θα δώσει -10 * Πολλαπλασιασμός `expr $a \* $b` θα δώσει 200 / Διαίρεση `expr $b / $a` θα δώσει 2 % Modulo `expr $b % $a` θα δώσει 0 = == Ανάθεση- Εκχωρεί την τιμή που έχει η δεξιά παράσταση στα αριστερά του τελεστή Ισότητα- Συγκρίνει δύο αριθμούς, αν και οι δύο είναι ίδιοι, στη συνέχεια, επιστρέφει αληθές a=$b αναθέτει την τιμή της μεταβλητής b στην a [ $a == $b ] επιστρέφει false!= Διάφορο- Συγκρίνει δύο αριθμούς, αν και οι δύο είναι διαφορετικοί, τότε επιστρέφει αληθές [ $a!= $b ] επιστρέφει true Είναι πολύ σημαντικό να σημειωθεί ότι όλες οι υπό συνθήκη εκφράσεις θα πρέπει να τοποθετούνται μέσα σε αγκύλες με ένα κενό από κάθε πλευρά, π.χ. [ $a == $b ]

Τελεστές Σχεσιακός Τελεστής -eq -ne -gt -lt -ge -le Περιγραφή Ελέγχει αν η τιμή των δύο τελεστέων είναι ίση ή όχι, εάν ναι, τότε η συνθήκη γίνεται αληθής Ελέγχει αν η τιμή των δύο τελεστέων είναι ίσες ή όχι, εάν οι τιμές δεν είναι ίσες τότε η συνθήκη γίνεται αληθής Ελέγχει αν η τιμή του αριστερού τελεστέου είναι μεγαλύτερη από την τιμή του δεξιού, αν ναι, τότε η συνθήκη γίνεται αληθής Ελέγχει αν η τιμή του αριστερού τελεστέου είναι μικρότερη από την τιμή του δεξιού, αν ναι, τότε η συνθήκη γίνεται αληθής Ελέγχει αν η τιμή του αριστερού τελεστή είναι μεγαλύτερη ή ίση με την τιμή του δεξιού, αν ναι, τότε η συνθήκη γίνεται αληθής Ελέγχει αν η τιμή του αριστερού τελεστή είναι μικρότερη ή ίση με την τιμή του δεξιού, αν ναι, τότε η συνθήκη γίνεται αληθής Παράδειγμα Χρήσης (για a=10 και b=20) [ $a -eq $b ] δεν είναι αληθής [ $a -ne $b ] είναι αληθής [ $a -gt $b ] δεν είναι αληθής [ $a -lt $b ] είναι αληθής [ $a -ge $b ] δεν είναι αληθής [ $a -le $b ] είναι αληθής Είναι πολύ σημαντικό να σημειωθεί ότι όλες οι υπό συνθήκη εκφράσεις θα πρέπει να τοποθετούνται μέσα σε αγκύλες με ένα κενό από κάθε πλευρά, π.χ. [ $a <= $b ]

Τελεστές Λογικός Τελεστής Περιγραφή Παράδειγμα Χρήσης (για a=10 και b=20)! NOT [! false ] είναι αληθής -o OR [ $a -lt 20 -o $b -gt 100 ] είναι αληθής -a AND [ $a -lt 20 -a $b -gt 100 ] είναι ψευδής

Τελεστές Αλφαριθμητικός Τελεστής =!= -z -n str Περιγραφή Ελέγχει αν οι τιμές των δύο τελεστές είναι ίσες ή όχι, εάν ναι, τότε η συνθήκη γίνεται αληθής Ελέγχει αν οι τιμές των δύο τελεστές είναι ίσες ή όχι, εάν οι τιμές δεν είναι ίσες τότε η συνθήκη γίνεται αληθής Ελέγχει αν το δεδομένο μέγεθος της συμβολοσειράς είναι μηδέν και εάν είναι, τότε επιστρέφει αληθής Ελέγχει αν το δεδομένο μέγεθος της συμβολοσειράς είναι μη μηδενικό και εάν είναι, τότε επιστρέφει αληθής Ελέγξτε αν str δεν είναι η κενή συμβολοσειρά και εάν είναι κενή επιστρέφει ψευδής Παράδειγμα Χρήσης (για a="abc" και b="efg") [ $a = $b ] δεν είναι αληθής [ $a!= $b ] είναι αληθής [ -z $a ] δεν είναι αληθής [ -z $a ] δεν είναι ψευδής [ $a ] δεν είναι ψευδής

Τελεστές Οι ακόλουθοι τελεστές ελέγχουν διάφορες ιδιότητες που σχετίζονται με τα αρχεία του Unix. Υποθέτουμε ότι έχουμε ένα μεταβλητή αρχείου που περιέχει το όνομα αρχείου "test" του οποίου το μέγεθος είναι 100 bytes και δεν έχει δικαιώματα ανάγνωσης, εγγραφής και εκτέλεσης Τελεστής Ελέγχου Αρχείων -b file -c file -d file -f file Περιγραφή Ελέγχει αν το αρχείο είναι ένα μπλοκ ειδικού αρχείου κι αν ναι τότε η συνθήκη γίνεται αληθής Ελέγχει αν το αρχείο είναι ένα ειδικό αρχείο χαρακτήρων κι αν ναι τότε η συνθήκη γίνεται αληθής Ελέγχει αν το αρχείο είναι ένας κατάλογος κι αν ναι τότε η συνθήκη γίνεται αληθής Ελέγχει αν το αρχείο είναι ένα κανονικό αρχείο, σε αντίθεση με έναν κατάλογο ή ένα ειδικό αρχείο κι αν ναι τότε η συνθήκη γίνεται αληθής Παράδειγμα Χρήσης (για a=10 και b=20) [ -b $file ] είναι ψευδής [ -c $file ] είναι ψευδής [ -d $file ] δεν είναι αληθής [ -f $file ] είναι αληθής

Τελεστές Τελεστής Ελέγχου Αρχείων -g file -k file -p file -t file -u file Περιγραφή Ελέγχει αν το αρχείο έχει group ID (SGID) bit ενεργοποιημένο κι αν ναι τότε η συνθήκη γίνεται αληθής Ελέγχει αν το αρχείο έχει sticky bit ενεργοποιημένο κι αν ναι τότε η συνθήκη γίνεται αληθής Ελέγχει αν το αρχείο είναι ένα pipe κι αν ναι τότε η συνθήκη γίνεται αληθής Έλεγχοι αν ο περιγραφέας (descriptor) αρχείου είναι ανοικτός και συνδέεται με ένα τερματικό κι αν ναι, τότε η συνθήκη γίνεται αληθής Ελέγχει αν το αρχείο έχει User ID (SUID) bit ενεργοποιημένο κι αν ναι τότε η συνθήκη γίνεται αληθής Παράδειγμα Χρήσης (για a=10 και b=20) [ -g $file ] είναι ψευδής [ -k $file ] είναι ψευδής [ -p $file ] είναι ψευδής [ -t $file ] είναι ψευδής [ -u $file ] είναι ψευδής

Τελεστές Τελεστής Ελέγχου Αρχείων -u file -r file -w file -x file -s file Περιγραφή Ελέγχει αν το αρχείο έχει User ID (SUID) bit ενεργοποιημένο κι αν ναι τότε η συνθήκη γίνεται αληθής Ελέγχει αν το αρχείο είναι αναγνώσιμο κι αν ναι τότε η συνθήκη γίνεται αληθής Ελέγχει αν το αρχείο είναι εγγράψιμο κι αν ναι τότε η συνθήκη γίνεται αληθής Ελέγχει αν το αρχείο είναι εκτελέσιμο κι αν ναι τότε η συνθήκη γίνεται αληθής Ελέγχει εάν το αρχείο έχει μέγεθος μεγαλύτερο από 0 κι αν ναι τότε η συνθήκη γίνεται αληθής Παράδειγμα Χρήσης (για a=10 και b=20) [ -u $file ] είναι ψευδής [ -r $file ] είναι αληθής [ -w $file ] είναι αληθής [ -x $file ] είναι αληθής [ -s $file ] είναι αληθής

Τελεστές Τελεστής Ελέγχου Αρχείων -e file Περιγραφή Ελέγχει αν υπάρχει αρχείο και είναι αληθής ακόμα και αν το αρχείο είναι ένας κατάλογος, που όμως να υπάρχει Παράδειγμα Χρήσης (για a=10 και b=20) [ -e $file ] είναι αληθής

Συνθήκες Ελέγχου Ροής Συνθήκες IF if [ condition ] then fi action Εμφωλευμένες if #!/bin/bash year=`date +%Y` if [ $[$year % 400] -eq 0 ]; then echo "This is a leap year. February has 29 days." elif [ $[$year % 4] -eq 0 ]; then if [ $[$year % 100] -ne 0 ]; then echo "This is a leap year, February has 29 days." else echo "This is not a leap year. February has 28 days." fi else echo "This is not a leap year. February has 28 days." fi

Βρόχοι Ο βρόχος for είναι λίγο διαφορετικός από τις κλασικές γλώσσες προγραμματισμού. Βασικά, επιτρέπουν να μετακινηθείτε σε μια σειρά από «λέξεις» μέσα από ένα αλφαριθμητικό. #!/bin/bash for i in 1 2 3 4 5 do done echo "Welcome $i times"

Βρόχοι Η while εκτελεί ένα κομμάτι κώδικα, εάν η έκφραση ελέγχου είναι αληθής, και σταματά μόνο όταν είναι ψευδής ή εμφανίζεται ένα break διάλειμμα στην εκτέλεση του κώδικα. #!/bin/bash COUNTER=0 while [ $COUNTER -lt 10 ]; do done echo The counter is $COUNTER let COUNTER=COUNTER+1

Βρόχοι Ο βρόχος until είναι σχεδόν ίδιος με το βρόχο while, εκτός από το ότι ο κώδικας εκτελείται, ενώ η έκφραση ελέγχου είναι ψευδής. #!/bin/bash COUNTER=20 until [ $COUNTER -lt 10 ]; do done echo COUNTER $COUNTER let COUNTER-=1

Συναρτήσεις Όπως σχεδόν σε οποιαδήποτε γλώσσα προγραμματισμού, μπορείτε να χρησιμοποιήσετε τις συναρτήσεις για να ομαδοποιήσετε κομμάτια κώδικα με ένα πιο λογικό τρόπο ή να χρησιμοποιήσετε αναδρομή Η Δήλωση μιας συνάρτησης γίνεται: function my_func { my_code } Η κλήση μιας συνάρτησης είναι ακριβώς σαν να καλείτε κάποιο άλλο πρόγραμμα, δηλαδή μπορείτε απλά να καλέσετε το όνομά του #!/bin/bash function quit { } exit function hello { } hello quit echo Hello!

Συναρτήσεις Συναρτήσεις με παραμέτρους Η συνάρτηση «e», τυπώνει το πρώτο όρισμα που λαμβάνει Ορίσματα, εντός της συνάρτησης αντιμετωπίζονται με τον ίδιο τρόπο όπως και τα ορίσματα που δίνονται στο script #!/bin/bash function quit { } exit function e { } e Hello e World quit echo $1

Παράδειγμα Τι κάνει το παρακάτω script; #!/bin/bash FILES="$@ for f in $FILES do # if.bak backup file exists, read next file if [ -f ${f}.bak ] then echo "Skiping $f file... continue # read next file and skip cp command fi # no backup file exists, just use cp command to copy file /bin/cp $f $f.bak done