Work9 REMARKS script le MONAZYGA & MESOS OROS Διαβάστε στο τελος του αρχείου πως ελέγχεται αν μια μεταβλητή είναι αριθμός ακέραιος / δεκαδικός κτλ. # work9 - monazyga # username : imanousi echo "Enter an number to see whether it is even or odd" echo "or enter 0 to stop the script." while [ $number -ne 0 ]; do echo "Number is $number" if [ $((number%2)) -eq 0 ] ; then echo "$number is even" echo "$number is odd" echo -n "Enter another number > " #αν θες στην ίδια γραμμή echo bye # work9 - mesosoros #username: imanousi echo scriptfilename : $0 count=0; countf=0 echo -n "Enter the number of the numbers you want to enter : " ; read n echo "Enter $n numbers" for ((i=1;i<=$n;i++)); do read ns let mo=(mo+ns)/i #OXI Εδώ θα υπολογίσεις το sum=sum+ns if [ $ns -lt-20 ] [ $ns -gt 20 ]; then let count=count+1 if [ $((ns%5)) -eq 0 ]; then
let countf=countf+1 #και όταν βγεις από το forθα βρεις Μ.Ο.=sum/n echo "The average price of the numbers you entered is : $mo" echo echo "The amount of numbers that do not belong to the (-20,20) range" echo "is innite-40." echo echo "Just kidding... in this case it is : $count " echo "And of those that are also multiples of 5 is : $countf" #dstais number=0; ipolipo=0 echo "Dose arithmo" while [ $number -ne 0 ] ; do ipolipo=$[number%2] # Oι μαθηματικές πράξεις δεν γίνονται ετσι απλά # εχεις αρκετους τροπους να διαλέξεις π.χ. expr ή $[] ή $(()) ή let if [ $ipolipo -eq 0 ] ; then echo "zygos" echo "monos" echo "dose arithmo" #Πες, και ότι για να σταματήσει να δώσει 0 #! /bash/bin /bin/bash #dstais plithos=0 ; mo=0 ; even=0 ; number=0 echo " dose plithos arithmon " read plithos for(( i=0 ; i<$plithos ; i++ )); do echo "dose arithmo" ipolipo=$[number%2] if [ $ipolipo -eq 0 ]; then # expr ή $[] ή $(()) ή let #πιο πάνω το είχες σωστά
even = $[even + 1] #ΧΩΡΙΣ ΚΕΝΑ πριν και μετά το ίσον mo =$[mo + number] #μαθ/κές πράξεις mo = $[mo/plithos] #oxi/n echo " o mesos oros ton zygon einai $mo " #!/bin/bash # work9 monazyga # username: ktoumpid number=-1 while [ $number -ne 0 ]; do echo -n "Enter a number: " echo "Number is $number" if [ $((number % 2)) -eq 0 ]; then echo "Number is even" echo "Number is odd" exit 0 #!/bin/bash # work9 mesos oros # username: ktoumpid number=0 counter=0 sum=0 counter_ltgt=0 counter_ltgt_mve=0
isnum='^-?[0-9]+([.][0-9]+)?$' # (***δείτε σημειώσεις πιο κάτω) echo "To exit this program type anything but not a number" while [ 1 ]; do #ΒΚ - αυτό το loop γίνεται για πάντα echo -n"enter a number: " echo "Number is $number" #ΒΚ γίνεται έλεγχος αν είναι θα δοθεί αριθμός η κάτι άλλο - δεν ζητείται AΛΛΑ ΠΟΛΥ ΧΡΗΣΙΜΟ #ΒΚ αν λοιπόν δοθεί κατι άλλο, βγαίνει από το loop με break.. if![[ $number =~ $isnum ]]; then #ΒΚ-εξηγώ το =~ στο τέλος του doc echo "You gave a non-numeral... breaking while loop"; break if [ $((number % 2)) -eq 0 ]; then echo "Number is even" let counter=counter+1 let sum=sum+number echo "Number is odd" if! [ $number -lt 20 -a $number -gt -20 ]; then #! (-20<number<20) δεν ανήκει στο -20,20 let counter_ltgt=counter_ltgt+1 if [ $((number%5)) -eq 0 ]; then if! [ $number -lt 20 -a $number -gt -20 ]; then let counter_ltgt_mve=counter_ltgt_mve+1 #Aν βγεί από το loop (ή άμεσα ή έχοντας δώσει μόνο περιττούς ) τοτε counter=0 #θα σου χτυπήσει η διαίρεση με μηδέν κτλ. average=$((sum/counter)) echo "The average of a total sum $sum of $counter numbers is: $average" echo "Of which don't belong inside the (-20,20) set: $counter_ltgt" echo "Of which don't belong inside the (-20,20) set, and are multiples of 5: $counter_ltgt_mve" exit 0
# work9 -monazyga #username: Nikiforos Pertselis npertsel number=0 echo -n "Enter a number: " while [ $number!= 0 ]; do echo "Number is $number" if [ $((number % 2)) -eq 0 ] ; then echo "Number is even" echo "Number is odd" echo -n "Enter a number. (Press 0 for exit). :" # work9 -mesosoros #username: Nikiforos Pertselis npertsel #============================================================================ plithos=0 number=0 count=0 synoloz=0 mo=0 echo -n "Dwste to plithos twn arithmwn: " read plithos while [ $plithos -gt 0 ] ; do echo -n "Dwste enan arithmo: " if [ $((number % 2)) -eq 0 ] ; then echo "O arithmos einai zygos!"
let count=count+1 let synoloz=synoloz+number echo "O arithmos einai monos!" let plithos=plithos-1 if [ $count -ne 0 ] ; then mo=$[synoloz/count] echo " o mesos oros ton zygon einai $mo " #!/bin/bash # work9 monazyga # username: Kornilia Deligianni kdeligia ar=-1 while [ $ar -ne 0 ]; do echo -n "eisagete arithmo: " ar # Προσοχή να τις τρέχεις πάντα echo "o arithmos einai $ar" if [ $((ar % 2)) -eq 0 ]; then echo "o aritmos einai zygos" #μπαίνε μέσα με Tab echo "o arithmos einai monos" exit 0 # work9 mesosoros #username: Kornilia Deligianni kdeligia p=0 ar=0 c=0 sum=0 mo=0 echo -n "Dwste to plithos twn arithmwn: " read p
while [ $p -gt 0 ] ; do echo -n "Dwste enan arithmo: " read ar if [ $((ar % 2)) -eq 0 ] ; then echo "O arithmos einai zygos!" #Tab let c=c+1 let sum=sum+ar echo "O arithmos einai monos!" let p=p-1 if [ $c -ne 0 ] ; then mo=$[sum/c] echo " o mesos oros twn zygwn einai $mo " #work9 - monazyga #lrigouts number=0 echo -n "Dose enan arithmo --> " echo "O arithmos einai to $number " echo "gia termatismo programmatos dose 0 " while [ $number -ne 0 ]; do if [ $((number % 2)) -eq 0 ]; then echo "o arithmos einai zygos" echo "o arithmos einai peritos" echo -n "dose epomeno arithmo --> "
exit 0 #work9 -monazyga #username: ksianidi echo "Enter an number: " echo "Enter 0 to stop" while [ $number -ne 0 ]; do echo "Number is $number" if [ $((number%2)) -eq 0 ] ; then echo "$number is even" echo "$number is odd" echo -n "Enter another number (0 to stop) : " #work9 -mesosoros #username: ksianidi echo scriptfilename : $0 count=0; countf=0 sum=0 echo -n "How many numbers you want to enter? : " ; read n echo "Enter $n numbers" for ((i=1;i<=$n;i++)); do read ns if [ $((ns%2)) -eq 0 ] ; then let sum=sum+ns;
if [ $ns -lt -20 ] [ $ns -gt 20 ]; then let count=count+1 #den anikoun sto -20,20 if [ $((ns%5)) -eq 0 ]; then let countf=countf+1 #kai epipleon einai pollaplasia tou 5 if [ $n -ne 0 ]; then let mo=sum/n; echo "Average price : $mo" echo " $count don't belong inside the (-20,20) " echo "of which are multiples of 5: $countf" echo ".. Edoses plithos arithmwn 0 " #!/bin/sh #Ergasia 9 vkiosses - monazyga echo "Enter a number:" while [ $number -ne 0 ] do echo "The number is:$number" if [ $((number % 2)) -eq 0 ] then echo "O arithmos einai zygos" echo "O arithmos einai monos" exit 0 #!/bin/bash #vkiosses -mesosoros
#ScriptFileName: $0 sum=0 plithos1=0 plithos2=0 echo "Enter plithos number:" for((i=1;i<=$number;i++)); do echo -n "Enter $i number:" s sum=$[sum+numbers] if [ $numbers -lt -20 ] [ $numbers -gt 20 ] then let plithos1=plithos1+1 if [ $((numbers%5)) -eq 0 ] then let plithos2=plithos2 +1 if [ $number -ne 0 ]; then mo=$[sum/number] echo "O mesos oros einai:$mo" echo echo "To plithos ton arithmon poy den anoikoyn sto diastima (-20,20) einai: $plithos1" echo echo "To plithos ton arithmon poy einai pollaplasia toy 5 kai den anoikoun sto diastima(-20,20) einai: $plithos2" exit 0 #work9 #username:aapostol-monazyga echo "Enter an number: " echo "Enter 0 to stop"
while [ $number -ne 0 ]; do echo "Number is $number" if [ $((number%2)) -eq 0 ] ; then echo "$number is even" echo "$number is odd" echo -n "Enter another number (0 to stop) : " # work9 #username:aapostol-mesomeros p=0 ar=0 c=0 sum=0 mo=0 echo -n "Dwse to plithos twn arithmwn: " read p while [ $p -gt 0 ] ; do echo -n "Dwste enan arithmo: " read ar if [ $((ar % 2)) -eq 0 ] ; then echo "O arithmos einai zygos!" #Tab let c=c+1 let sum=sum+ar echo "O arithmos einai monos!" let p=p-1 if [ $c -ne 0 ] ; then mo=$[sum/c] echo " o mesos oros twn zygwn bgainei $mo "
#!/bin/bash # work9-monazyga #username: vlainidis echo scriptfilename : $0 number=0 echo -n "give a number and i will decide if it is odd or even: " echo "Number is $number" # Πρεπει και εδώ να πεις τι είναι, μονός ή ζυγός # ή να μην διαβάσεις καθόλου, και να κάνεις το number=1 while [ $number -ne 0 ]; do echo -n "give a number (or 0 to stop) and i will decide if it is odd or even: " if [ $((number % 2)) -eq 0 ]; then echo "The number is even" echo "The number is odd" exit 0 #!/bin/bash # work9 -monazyga #username:ckaripia echo scriptlename: $0 number=0 echo -n "enter a number >" echo "number is $number" while [ $number -ne 0 ]; do if [ $((number%2)) -eq 0 ]; then echo "$number is even" echo "$number is odd" echo -n "enter a number (or 0 to stop) >"
#!/bin/bash #work9 -mo #username:ckaripia echo scriptname: $0 mm=0 nn=0 k=0 l=0 o=0 echo "dwse plithos" read n for ((i=1;i<=$n;i++));do echo -n "dwse arithmo: " read nn if [ $nn -lt-20] [ $nn -gt 20 ]; then let l=l+1 if [ $((nn%5)) -eq 0 ];then let o=o+1 if [ $((nn%2)) -eq 0 ];then let k=k+1 let mm=mm+nn echo "einai monos" #βάζε αν θες, πιο ευκρινή ονόματα π.χ. num αντί nn mo=$((mm/k)) #me k<>0 echo "o mesos oros twn zygwn einai $mo" echo "to plithos ton arithmon p dn anikoun sto diastima -20 mexri 20 einai $l" echo "to plithos ton arithmon pou eiani pollaplasia tou 5 kai den anoikoun sto diastima -20 mexri 20 einai $o" Μεταβλητή Ακέραια ή ΟΧΙ?? (***) Πως θα ελέγξετε αν µια µεταβλητή π.χ. x=13abc έχει µόνο (+) αριθµούς, και δεν περιέχει γράµµατα?
1 oς τρόπος. Εµφανίζω την µεταβλητή, ψάχνω για αριθµό και µετράω γραµµές (=0 δεν είναι αριθµός) echo $x egrep '^[0-9]+$' wc -l 2 ος τρόπος. Εµφανίζω την µεταβλητή, ψάχνω για αριθµό µε οption q (quiet) και ελέγχω το exit code=0 echo $x egrep '^[0-9]+$' - q ή echo $x egrep '^[[:digit:]+$' -q Η παρακάτω regex έκφραση λαµβάνει υπόψη και τους αρνητικούς αριθµούς (όχι τους δεκαδικούς) re='^[-+0-9][0-9]*$' ή re='[-+]?[0-9]+$' #ο 1 ος χαρακτήρας είναι ή - ή + ή 0-9 επανάληψη Βάζοντας σε μια μεταβλητή re τo regex μπορώ να πώ μετά π.χ. echo $x egrep $re -q Ας δούμε το ωραίο regex του Κων/νου (που θέλει να συμπεριλάβει αρνητικούς και δεκαδικούς): re='^-?[0-9]+([.][0-9]+)?$ ' Λέει ξεκινάει με -, που επαναλαμβάνεται καμία έως 1 φορά, δηλ. έχει - (αρνητικός) ή δεν έχει (θετικός) μετά, αριθμό που επαναλαμβάνεται 1 έως πολλές φορές, μετά ίσως έχει, ίσως δεν έχει δεκαδικό μέρος δηλ. ([.][0-9]+)? Αλλά ας θεωρήσουμε όμως, μόνο ακεραίους re='^-?[0-9]+$' #3 ος τρόπος test, [, [[ test for condition - δώστε help [[ Με το Korn Shell και το Bash μπορούμε να βάλουμε και διπλά [[ που συμπεριφέρονται λίγο διαφορετικά string =~ $re Oταν μπαίνει ο operator `=~', ελέγχεται αν το string ταιριάζει την regex re if [[ $x =~ $re ]] ; then echo number re='^-?[0-9]+([.][0-9]+)?$ ' #4 ος o πιο ΑΠΛΟΣ τρόπος Για να ελέγξουμε αν μια μεταβλητή είναι ακέραια την συγκρίνω με έναν άλλο ακέραιο π.χ. test $x -ge 0 >/dev/null 2>&1 # το αποτέλεσμα της εντολής και το λάθος, το στελνω στο..καλό 1 if [ $? -eq 0 ]; then #ελέγχω αν η εντολή test έχει exit code 0 echo "Integer" 1 εντολή > /dev/null 2>/dev/null ή και εντολή >/dev/null 2>&1 (και η εξοδος λαθών να πάει όπου και η κανονική έξοδος) >/dev/null σηµαίνει ότι η έξοδος πηγαίνει στον «αγύριστο» στην «µαύρη (απύθµενη) τρύπα» 2>/dev/null σηµαίνει ότι και το λάθος να πάει στο /dev/null Ετσι αν είχα δώσει x=asasa ; test $x -ge 0 θα είχα ένα µήνυµα λάθους που δεν θέλω να το δώ -bash: test: asasa: integer expression expected
echo "Not an integer" (* Οι 2 πρώτες εντολές (test και if ) µπορούν να συµπτυχθούν σε µία εντολή)