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

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

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

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

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

ΜΑΘΗΜΑ: ΕΙΑΓΩΓΗ ΣΑ ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ (UNIX) ΕΡΓΑΣΤΗΡΙΟ. 9o ΕΡΓΑΣΤΗΡΙΟ

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

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

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

Διάλεξη 3: Προγραμματισμός σε JAVA I. Διδάσκων: Παναγιώτης Ανδρέου

Shell Scripts: loops / if / test

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

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

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

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

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

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

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

ΜΑΘΗΜΑ: ΕΙΑΓΩΓΗ ΣΑ ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ (UNIX) ΕΡΓΑΣΤΗΡΙΟ. 10o ΕΡΓΑΣΤΗΡΙΟ

Προγραμματισμός Διαχείρισης Συστημάτων ΙΙ

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

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

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

Unix: Εντολές, οργάνωση και χειρισµός αρχείων, διεργασίες

Εργαστήριο 4: Εργαλεία Συστήματος UNIX. Διδάσκων: Γιώργος Χατζηπολλάς. Στο εργαστήριο θα μελετηθούν: Εργαστηριακή Άσκηση 2 Παραδείγματα χρήσης awk

Διάλεξη 7 Εργαλεία Ωφελιμότητας Unix: Αwk

Η γλώσσα C. Δείκτες (pointers)

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

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

[11] Υπολογιστικά συστήματα: Στρώματα. Περιεχόμενα. Εισαγωγή. επικοινωνία εφαρμογές λειτουργικό σύστημα προγράμματα υλικό

Εργαστήριο Οργάνωσης Η/Υ. Δαδαλιάρης Αντώνιος

ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΥΠΡΟΥ. ΕΠΛ371 - Προγραµµατισµός Συστηµάτων

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

ΓΡΑΜΜΙΚΟΣ & ΔΙΚΤΥΑΚΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ

Λειτουργικά Συστήματα - Εργαστήριο 6. 6ο Εργαστήριο. Συμπίεση αρχείων Χρήση ειδικών χαρακτήρων στην γραμμή εντολών. Χρήστες και Ομάδες Χρηστών

Αρχιτεκτονικές Δικτύων & Πρωτόκολλα Ι

Στο εργαστήριο θα μελετηθούν: Διδάσκων: Γιώργος Χατζηπολλάς. Εργαστήριο 2: Εργαλεία Συστήματος UNIX. Ομάδες για παρουσίαση

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

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

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

ΤΕΙΘ ΣΤΕΦ - ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ ΜΑΘΗΜΑ: ΕΙΣΑΓΩΓΗ ΣΤΑ ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ (UNIX) ΕΡΓΑΣΤΗΡΙΟ

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

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

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

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

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

ΕΠΛ 003: ΕΠΙΣΤΗΜΗ ΤΗΣ ΠΛΗΡΟΦΟΡΙΚΗΣ ΚΑΙ ΠΛΗΡΟΦΟΡΙΑΚΑ ΣΥΣΤΗΜΑΤΑ. Εισαγωγή στο Unix

Διάλεξη 5η: Εντολές Επανάληψης

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

% ls -l /usr/bin/wc -rwxr-xr-x 1 root bin 7368 Jul /usr/bin/wc

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

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

Β. Εισαγωγή στον Προγραμματισμό Η/Υ με την JavaScript

Π Ο Λ Ι Τ Ι Κ Α Κ Α Ι Σ Τ Ρ Α Τ Ι Ω Τ Ι Κ Α Γ Ε Γ Ο Ν Ο Τ Α

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

ΚΕΦΑΛΑΙΟ 9 ΒΑΣΙΚΕΣ ΕΝΤΟΛΕΣ

Προγραµµατισµός 2 The shell

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

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

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

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

CLIPS Σύντομη Εισαγωγή - Περιγραφή του Μηχανισμού Εκτέλεσης

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

Λειτουργικά Συστήματα (ΗΥ-345) Χειμερινό Εξάμηνο

Εισαγωγή στον Προγραμματισμό Μάθημα 2: Οκτώβριος 2014 Χ. Αλεξανδράκη, Γ. Δημητρακάκης

Κανονικές εκφράσεις ή παραστάσεις (Regular Expressions) 3 ο Εργαστήριο ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ ΙΙ - ΕΡΓΑΣΤΗΡΙΟ

(Regular Expressions) ΤΕΙΘ-ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ: ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ ΙΙ/ ΧΕΙΜ

HY150a Φροντιστήριο 3 24/11/2017

Εισαγωγή στον Προγραμματισμό Εργαστήριο 3: Βοηθητικά προγράμματα του Linux CLI. Οκτώβριος 2014 Χ. Αλεξανδράκη Γ. Δημητρακάκης

FORTRAN και Αντικειμενοστραφής Προγραμματισμός

*? [xyz] [^xy] [!0-9] [:alpha:] [:digit:]

Εισαγωγή στον επιστημονικό προγραμματισμό 2 o Μάθημα

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

ΤΕΙΘ ΣΤΕΦ - ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ ΜΑΘΗΜΑ: ΕΙΣΑΓΩΓΗ ΣΤΑ ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ (UNIX) ΕΡΓΑΣΤΗΡΙΟ. 6o ΕΡΓΑΣΤΗΡΙΟ

4. Εισαγωγή στη Java

Εισαγωγή στο Bison. Μεταγλωττιστές, Χειμερινό εξάμηνο

Δικαιώματα Πρόσβασης στο Λειτουργικό Σύστημα UNIX. Χρήστες και Ομάδες στο Unix. Δικαιώματα στο Unix. Παράδειγμα Δένδρου Συστήματος Αρχείων

Αναφορά (1/2) Μπορούμε να ορίσουμε μια άλλη, ισοδύναμη αλλά ίσως πιο σύντομη, ονομασία για ποσότητα (μεταβλητή, σταθερή, συνάρτηση, κλπ.

Στη C++ υπάρχουν τρεις τύποι βρόχων: (a) while, (b) do while, και (c) for. Ακολουθεί η σύνταξη για κάθε μια:

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

ΚΕΦΑΛΑΙΟ 2. Τιμές, τύποι, μεταβλητές, λέξεις-κλειδιά, εντολές. 2.1 Εισαγωγή

Μεθοδολογία Προγραμματισμού

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

Η γλώσσα C. Δείκτες (pointers)

make Προγραμματισμός II 1

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

Α Ν Α Λ Τ Η Α Λ Γ Ο Ρ Ι Θ Μ Ω Ν Κ Ε Υ Α Λ Α Ι Ο 5. Πως υπολογίζεται ο χρόνος εκτέλεσης ενός αλγορίθμου;

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

2ο Εργαστήριο. Εισαγωγική στο Λ.Σ. LINUX Γενικές εντολές συστήματος και χρηστών

Εργαστήριο Λειτουργικών Συστημάτων Ακ. Έτος Άσκηση 3

Τμήμα Μηχανολόγων Μηχανικών Πανεπιστήμιο Θεσσαλίας ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Η/Υ. Δομή Επανάληψης. Ιωάννης Λυχναρόπουλος Μαθηματικός, MSc, PhD

A ΜΕΡΟΣ. 1 program Puppy_Dog; 2 3 begin 4 end. 5 6 { Result of execution 7 8 (There is no output from this program ) 9 10 }

$./jms console -w <jms in> -r <jms out> -o <operations file> namedpipe. (standard input).

Το Shell. Προγραμματισμός II 1

Ευφυής Προγραμματισμός

Πρόβλημα 1: Αναζήτηση Ελάχιστης/Μέγιστης Τιμής

Εισαγωγή στην πληροφορική

Σχεσιακή Άλγεβρα και Σχεσιακός Λογισμός. Σχεσιακή Άλγεβρα Σχεσιακός Λογισμός

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

ΜΕΤΑΓΛΩΤΤΙΣΤΕΣ. Στις βασικές έννοιες που σχετίζονται με τη λεξική ανάλυση. Στη δήλωση ορισμό κανονικών εκφράσεων

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

Transcript:

Εισαγωγή στα Λειτουργικά Συστήματα S E T Δ Ι Α Φ Α Ν Ε Ι Ω Ν 1 2 S H E L L S C R I P T S A R G U M E N T S + F O R Α Ν Τ Ω Ν Η ς Σ Ι Δ Η Ρ Ο Π Ο Υ Λ Ο ς

Χρήση Command-Line Parameters Κάθε φορά που το κέλυφος διερμηνεύει μια εντολή συνδέει ονόματα μεταβλητών σε κάθε παράμετρο της γραμμής εντολών. Ως παράμετροι της γραμμής εντολών θεωρούνται ακολουθίες χαρακτήρων διαχωριζόμενες με κενά ή tab. (χρησιμοποιείστε εισαγωγικά αν πρόκειται χαρακτήρες με ενδιάμεσα κενά να αντιπροσωπεύουν ένα στοιχείο). 2 bash-2.05a$ ls -l /tmp /dev εντολή 2η παράμετρος 1η παράμετρος 3η παράμετρος

Shell programming διαχείριση μεταβλητών Ειδικές μεταβλητές φλοιού 3 όνομα περιγραφή $1 - $9 Οι παράμετροί στο script $0 το όνομα της εντολής (όπως το έδωσε ο χρήστης) $# το πλήθος των παραμέτρων $* ένα string που περιλαμβάνει όλα τις παραμέτρους $@ το ίδιο με το $*, εκτός αν χρησιμοποιούνται εισαγωγικά (είναι πίνακας) $$ ο αριθμός διεργασίας (PID) του φλοιού $! Ο αριθμός διεργασίας της διεργασίας που εκτελείται (εκτελέστηκε) στο παρασκήνιο $? Η κατάσταση εξόδου (exit status) της εντολής που εκτελέστηκε τελευταία.

4 $* επεκτείνεται στις παραμέτρους θέσης (positional parameters), ξεκινώντας από την πρώτη. Όταν η επέκταση γίνεται χρησιμοποιώντας διπλά εισαγωγικά, υλοποιείται με μια μόνο λέξη που περιλαμβάνει την τιμή κάθε παραμέτρου που διαχωρίζεται από τις υπόλοιπες τιμές με διαχωριστικό που αντιστοιχεί στον πρώτο χαρακτήρα της ειδικής μεταβλητής IFS'. $@ επεκτείνεται στις παραμέτρους θέσης, ξεκινώντας από την πρώτη. Όταν η επέκταση γίνεται χρησιμοποιώντας διπλά εισαγωγικά, κάθε παράμετρος επεκτείνεται σε μια ξεχωριστή λέξη. $# επεκτείνεται στον αριθμό των παραμέτρων θέσης στο δεκαδικό σύστημα αρίθμησης. $0 επεκτείνεται στο όνομα του φλοιού ή του σεναρίου φλοιού.

Παραδείγματα 5 bash-2.05a$./test_params 22 33333 param 0=./test_params param 1=22 param 2=33333 bash-2.05a$./test_params "2 3 4" param 0=./test_params param 1=2 3 4 param 2= bash-2.05a$./test_params "2 3 4" "5 6 7" param 0=./test_params param 1=2 3 4 param 2=5 6 7 bash-2.05a$./test_params 2 3 4 5 6 7 param 0=./test_params param 1=2 param 2=3 αρχείο test_params echo "param 0=$0" echo "param 1=$1" echo "param 2=$2"

Παραδείγματα bash-2.05a$./test_params 2 3 4 5 6 7 αρχείο test_params param 0=./test_params param 1=2 param 2=3 echo "param 0=$0" bash-2.05a$ ~/test/test_params 2 3 4 5 echo "param 1=$1" echo "param 2=$2" param 0=/usr/people/staff/ektaktoi/it/asidirop/test/ test_params param 1=2 param 2=3 bash-2.05a$ 6 Το $0 περιέχει το όνομα εντολής όπως το έδωσε ο χρήστης (αφού βέβαια ερμηνευτούν οι ειδικοί χαρακτήρες)

FILE: testparms Παραδείγματα # FILE: testparms echo "all are $1 $2 $3 $4 $5 $6 $7 $8 $9 $10 $11 $12" echo "asteraki is $*" echo "diesi is $#" $./testparms a b c d e f g h i j k l all are a b c d e f g h i a0 a1 a2 asteraki is a b c d e f g h i j k l diesi is 12 Το $10 σημαίνει $1 και κολλητά ο χαρακτήρας "0" μπορούμε να χρησιμοποιήσουμε μέχρι το $9 (ένατη παράμετρος) μπορούμε να χρησιμοποιήσουμε τις επόμενες χρησιμοποιώντας loop. 7

File: fs echo "$1 status is:" stat "$1" touch "$1" echo "after the touch, $1 became:" stat "$1" bash-2.05a$./fs cc cc status is: cc: inode 21316263; dev 308; links 1; size 314 regular; mode is rw-r--r--; uid 1143 (asidirop); gid 1000 (it) projid 0 st_fstype: xfs change time - Sat Jan 11 20:07:07 2003 <1042308427> access time - Fri Oct 20 03:36:28 2006 <1161304588> modify time - Sat Jan 11 20:07:07 2003 <1042308427> after the touch, cc became: cc: inode 21316263; dev 308; links 1; size 314 regular; mode is rw-r--r--; uid 1143 (asidirop); gid 1000 (it) projid 0 st_fstype: xfs change time - Mon Nov 27 19:36:17 2006 <1164648977> access time - Mon Nov 27 19:36:17 2006 <1164648977> modify time - Mon Nov 27 19:36:17 2006 <1164648977> bash-2.05a$ 8

Εντολές προγραμματισμού στο κέλυφος for i in λίστα λέξεων; do εντολές, το $i παίρνει διαδοχικά τις τιμές της λίστας λέξεων Παράδειγμα : for i in word1 word2 word3; do echo $i 9

Παράδειγμα 10 File: test2 #!/bin/sh bash-2.05a$./test2 first test i is 1 i is 2 i is 3 i is 4 second test i is 1 2 3 4 third test i is 1 2 i is 3 i is 4 bash-2.05a$ echo "first test" for i in 1 2 3 4; do echo "i is $i" echo "second test" for i in "1 2 3 4"; do echo "i is $i" echo "third test" for i in "1 2" "3" 4; do echo "i is $i"

Παράδειγμα: χειρισμός παραμέτρων 11 bash-2.05a$./sc1 aaaa 22222 ccc params: 3 i is aaaa i is 22222 i is ccc param1 is aaaa param2 is 22222 param3 is ccc bash-2.05a$./sc1 aaaa "22222 ccc" params: 2 i is aaaa i is 22222 i is ccc param1 is aaaa param2 is 22222 ccc param3 is bash-2.05 a $ File:sc1 echo "params: $#" for i in $@;do echo "i is $i" echo "param1 is $1" echo "param2 is $2" echo "param3 is $3" όταν δώσουμε μέσα σε ένα όρισμα κάποιον ειδικό χαρακτήρα ( πχ: space), τότε η χρήση της for γίνεται προβληματική.

Παράδειγμα: χειρισμός παραμέτρων 12 bash-2.05a$./sc1 aaaa "*" params: 2 i is aaaa i is 20112xeim-adopse.tar.bz2 i is admin_menu-7.x-3.0-rc2.tar.gz i is arx i is arxeio2 i is asd i is ask3erg4 param1 is aaaa param2 is * param3 is bash-2.05a$ File:sc1 echo "params: $#" for i in $@;do echo "i is $i" echo "param1 is $1" echo "param2 is $2" echo "param3 is $3" όταν δώσουμε μέσα σε ένα όρισμα κάποιον ειδικό χαρακτήρα ( πχ: *), τότε η χρήση της for γίνεται προβληματική.

Παράδειγμα 13 bash-2.05a$./sc2 aaaa 22222 ccc params: 3 i is aaaa i is 22222 i is ccc param1 is aaaa param2 is 22222 param3 is ccc bash-2.05a$./sc2 aaaa "22222 ccc" params: 2 i is aaaa i is 22222 i is ccc param1 is aaaa param2 is 22222 ccc param3 is bash-2.05a$ File:sc2 echo "params: $#" for i in $*;do echo "i is $i" echo "param1 is $1" echo "param2 is $2" echo "param3 is $3" Το ίδιο πρόβλημα με τους ειδικούς χαρακτήρες έχουμε και με την χρήση του $*.

Παράδειγμα 14 bash-2.05a$./sc3 aaaa 22222 ccc params: 3 i is aaaa 22222 ccc param1 is aaaa param2 is 22222 param3 is ccc bash-2.05a$./sc3 aaaa "22222 ccc" params: 2 i is aaaa 22222 ccc param1 is aaaa param2 is 22222 ccc param3 is bash-2.05a$ File:sc3 echo "params: $#" for i in "$*";do echo "i is $i" echo "param1 is $1" echo "param2 is $2" echo "param3 is $3" με την χρήση του $* μέσα σε εισαγωγικά "$*" γίνεται χειρότερη η κατάσταση διότι ο βρόγχος θα κάνει ΜΙΑ επανάληψη.

Παράδειγμα 15 bash-2.05a$./sc4 aaaa 22222 ccc params: 3 i is aaaa i is 22222 i is ccc param1 is aaaa param2 is 22222 param3 is ccc bash-2.05a$./sc4 aaaa "22222 ccc" params: 2 i is aaaa i is 22222 ccc param1 is aaaa param2 is 22222 ccc param3 is bash-2.05a$ File:sc4 echo "params: $#" for i in "$@";do echo "i is $i" echo "param1 is $1" echo "param2 is $2" echo "param3 is $3" η σωστή μεθοδος για να διατρέξουμε όλες τις παραμέτρους είναι με χρήση του $@ μέσα σε εισαγωγικά "$@". τότε κάθε στοιχείο του πίνακα μπαίνει σε "

Παράδειγμα To script ff, μπορεί να δεχθεί απεριόριστο πλήθος παραμέτρων. κάθε παράμετρος υποτίθεται ότι εκφράζει όνομα αρχείου. Για κάθε ένα εκτελούμε την ls -l, wc -l και την file. 1 η επανάληψη i="file1" 2 η επανάληψη i="file2" 16 File:ff bash-2.05a$./ff file1 file2 ----------------------- -rwxr--r-- 1 asidirop it 77 Nov 20 19:17 file1 4 file1 file1: /bin/sh -x script text ----------------------- ----------------------- -rwxr-xr-x 1 asidirop it 61 Nov 20 19:34 file2 7 file2 file2: /bin/sh script text ----------------------- for i in "$@"; do echo ------------------ ls l "$i" wc l "$i" file "$i" echo ------------------ Done

Παράδειγμα εάν στο script μας δώσουμε όρισμα που περιέχει wildcard (πχ file*), τότε το wildcard (ή όποιος άλλος ειδικός χαρακτήρας) ερμηνεύεται από το shell και όχι από το script μας. εσωτερικά από το script δεν υπάρχει τρόπος να βρούμε ότι ο χρήστης έδωσε./ff file* και όχι./ff file1 file2 1 η επανάληψη i="file1" 2 η επανάληψη i="file2" 17 File:ff for i in "$@"; do echo ------------------ ls l $i wc l $i file $i echo ------------------ bash-2.05a$./ff file* ----------------------- -rwxr--r-- 1 asidirop it 77 Nov 20 19:17 file1 4 file1 file1: /bin/sh -x script text ----------------------- ----------------------- -rwxr-xr-x 1 asidirop it 61 Nov 20 19:34 file2 7 file2 file2: /bin/sh script text -----------------------

Παράδειγμα εάν στο script μας δώσουμε όρισμα που περιέχει ειδικό χαρακτήρα, αυτός ερμηνεύεται από το shell πριν εκτελεστεί το script. 1 η επανάληψη i=" /home/staff/ektakto i/asidirop/file1" 2 η επανάληψη i=" /home/staff/ektakto i/asidirop/file_x" 2 η επανάληψη i="./file3" 18 asidirop@aetos:/tmp$./ff ~/fi*./file3 ------------------ -rw-r--r-- 2 asidirop conit 0 Apr 27 02:37 /home/staff/ektaktoi/asidirop/file1 0 /home/staff/ektaktoi/asidirop/file1 /home/staff/ektaktoi/asidirop/file1: empty ------------------ ------------------ -rw-r--r-- 1 asidirop conit 0 May 14 14:02 /home/staff/ektaktoi/asidirop/file_x 0 /home/staff/ektaktoi/asidirop/file_x /home/staff/ektaktoi/asidirop/file_x: empty ------------------ ------------------ -rw-r--r-- 1 asidirop conit 422 Apr 9 09:58./file3 16./file3./file3: ASCII text ------------------ asidirop@aetos:/tmp$

for 19 τα περισσότερα shells δεν μπορούν να χειριστούν τους αριθμούς. Η for διατρέχει την μεταβλητή στην λίστα παραμέτρων (λέξεων) που τις δίνεται. Το bash μπορεί να χειριστεί αριθμούς και έχει ειδική σύνταξη της for όπως στις γνωστές γλώσσες προγραμματισμού C,Java,κτλ. σύνταξη: for ((expression; expression; expression)) do commands

20 Προσοχή στις διπλές παρενθέσεις. Το παρακάτω ισχύει μόνο για το bash μέσα στις (( )) ισχύει συντακτικό παρόμοιο με την C,java. Οι περισσότεροι ειδικοί χαρακτήρες τους shell, χάνουν την σημασία τους μέσα στις (( )). asidirop@aetos:/tmp$ for((i=1;i<10;i++)) do echo $i; 1 2 3 4 5 6 7 8 9

Πράξεις μέσα σε (( )) για το bash 21 id++ id-- ++id --id variable post-increment and post-decrement variable pre-increment and pre-decrement - + unary minus and plus! ~ logical and bitwise negation ** exponentiation *,/, % multiplication, division, remainder +, - addition, subtraction <<, >> left and right bitwise shifts <=,>=, <, > comparison ==,!= equality and inequality &, ^, &&, expr?expr:expr = *= /= %= += -= <<= >>= &= ^= = bitwise AND, bitwise exclusive OR, bitwise OR logical AND, logical OR conditional operator assignment