-n δεν αφήνει γραμμή SCRIPTS FILES ΟΛΑ ΤΑ SCRIPT les πρέπει να είναι ΕΚΤΕΛΕΣΙΜΑ: chmod +x myscript Παράδειγμα ενός απλού script με όνομα myscript "This is my rst script" -n "I am the user: " whoami Summary7 Ασκ 1 η ls -l egrep '^-' wc -l Ασκ 2 η με ",',\,.. "'" Ασκ 3 η μεταβλητές και με ",' Ασκ 4 η x=`ls -l και και $x με ",' Ασκ 5 η a+b Ασκ 6 η read a Ασκ 7 η $1,..$9 chmod +x myscript./myscript ΠΡΟΣΟΧΗ: ανοίγεις με " κλείνεις με " Βάλτε τις ΑΣΚΗΣΗ 1 : 1 ο script με όνομα myls n "Plithos katalogwn: " ls -l egrep '^d' wc -l n "Plithos arxeiwn: " ls -l egrep -c '^-' n "Plithos krifwn katalogwn: " # ls la egrep ' \.' κτλ. n "Plithos krifwn arxeiwn: " #... chmod +x myls./myls Σχόλια ΑΣΚΗΣΗ 2 -ΑΚΥΡΩΣΗ ΣΗΜΑΣΙΑΣ ΕΙΔΙΚΩΝ ΧΑΡΑΚΤΗΡΩΝ #_test "1.the process id is : $$ and cwd $PWD" '2.the process id is : $$ and cwd $PWD ' 3.the process id is : $$ and cwd $PWD 4.the process id is\ \ :\ \ \ \$\$ and cwd $PWD '5.the process id is : "$$ and cwd $PWD" ' "6.the process id is : '$$' and cwd $PWD"? Tο 5. δίνει το ίδιο με το 2.? Tο 6. δίνει το ίδιο με το 1. chmod +x _test./_test $$ είναι το pid π.χ. 24128 του τρέχοντος shell $PWD είναι το working directory π.χ. /home/student/.. [1] Χωρίς τίποτα δεν ακυρώνει " ακύρωση όλων εκτός $, \,!, " ' ακύρωση όλων ' \ ακύρωση
το = κολλητ ΑΣΚΗΣΗ 3 ΤΙΜΕΣ & ΧΡΗΣΗ ΜΕΤΑΒΛΗΤΩΝ - κενά, αρ. πράξεις #_test3 a=test -bash: B: command not found b=test B c="test C" d="$c + D" TEST C + D "1.a is $a" "2.b is $b" '3.c is $c' "4.c is $c" Διατηρεί τα κενά 5.c is $c Δεν διατηρεί τα κενά "5.d is $d" var1="6 " var2=$((var1 + 2 )) "7.var1 is $var1, var2 is $var2" chmod +x _test3./_test3 Ανάθεση τιμής x=3 Ανάκτηση τιμής $ x Πράξεις ( +,-,*,/) γίνoνται με την expr π.χ. expr $x + $y ή με χρήση $[ ] ή $(( )) π.χ. z=$((x + y )) ΑΣΚΗΣΗ 4 - Εκτέλεση εντολής σε μεταβλητή x=`date` #_test4a x=`ls l` x is $x chmod +x _test4a./_test4a 'x is $x'./_test4b "x is $x"./_test4c Τα ανάποδα εισαγωγικά ` ` προκαλούν εκτέλεση εντολής χωρίς όμως εμφάνιση στην οθόνη (st. output) Αν γίνει εκχώρηση σε μια μεταβλητή το αποτέλεσμα θα επιστραφεί στην μεταβλητή. π.χ. d=`date` ; $d θα εμφανίσει την ημερομηνία. [2]
ΑΣΚΗΣΗ 5 - μεταβλητές, πράξεις #_test5 a=5 b=" 6" c="" d=$((a+5)) e=$((b+5)) f=$((c+5)) chmod +x _test4a To τρέχουμε με./_test4a "d is $d, e is $e, f is $f" d=`expr $a + 5` e=`expr $b+5` f=`expr $c+5` "d is $d, e is $e, f is $f" ΑΣΚΗΣΗ 6 - read #script06 a=5 n "Give me your name: " read name "value of a is $a" "value of name is $name" chmod +x script06./script06 ΑΣΚΗΣΗ 7 - ΠΑΡΑΜΕΤΡΟΙ chmod +x script07 #script07 To τρέχουμε με./script07 "rst parameter : $1"./script07 1 VK "third parameter : $3"./script07 one two 3 4 5 6 7 eight 9 ten 11 "ninth parameter : $9" [3]
"tenth parameter : $10" "eleventh parameter : $11" "No of parameters : $#" "all parameters : $*" "all parameters : $@" shift "rst parameter : $1" "all parameters : $*" $# : το πλήθος των ορισμάτων $*, $@ : Η λίστα (πίνακας) με τα ορίσματα $$ : Το ProcessID του τρέχοντος shell Οι παράμετροι θέσης έχουν τα ονόματα $1, $2, $3 (για πάνω από 9 μεταβλητές χρησιμοποιώ shift ) Σκριπτάκια 9 ης Εργασίας #Μονα-ζυγα ~vassik/bin/odd number=0 -n "Enter a number > " read number "Number is $number" if [ $((number % 2)) -eq 0 ] ; then "Number is even" "Number is odd" if εντολή then κενό (αλλιώς δεν δουλεύει) if [ $num -eq 0 ] #num=0 if [ $num -ne 0 ] #num 0 if [ $num -gt 0 ] #num>0 if [ $num -lt 0 ] #num<0 if [ $num -ge 0 ] #num>=0 if [ $num -le 0 ] #num<=0 1.Μετατρέψτε το ώστε να τρέχει συνεχώς, και να σταματάει μόνο όταν number=0 (while) 2.Να γραφεί πρόγραμμα που διαβάζει n (δίνεται με read) αριθμούς και υπολογίζει το μέσο όρο των ζυγών αριθμών. Προαιρετικά όποιος θέλει υπολογίζει Το πλήθος των αριθμών που δεν ανήκουν στο διάστημα (-20,20) Το πλήθος των αριθμών που είναι πολλαπλάσια του 5 και ταυτόχρονα δεν ανήκουν στο (-20,20). #Aπλό loop ~vassik/bin/loop6 https://linuxcong.org/bash-scriptingtutorial 12.2. Bash while loop (17.Arithmetic) ~vassik/bin/loop6 COUNT=6 # bash while loop while [ $COUNT -gt 0 ]; do Value of count is: $COUNT let COUNT=COUNT-1 # ή COUNT=$((COUNT-1)) ή. http://www.bashguru.com/2010/12/math-inshell-scripts.html You can do maths using any one of the following methods. 1. Using expr command 2 Using $(()) construct. 3 Using let command 4 Using bc command. 5 Using $[] construct. [4] while εντολή do
https://linuxcong.org/bash-scripting-tutorial 9.2. Nested if/ ή ~vassik/bin/nif read choice while [ $choice -eq 4 ]; do if [ $choice -eq 1 ] ; then "You have chosen word: Bash" "You have chosen word: other than Bash" [5]