Δημοσιεύτηκε: 29 Αύγ 2015, 20:19
από giwrgosatma
Learner έγραψε:
giwrgosatma έγραψε:Ποιο ειναι το διαφορο <> δηλαδη το ΝΟΤ αυτης της εντολης ?
Κώδικας: Επιλογή όλων
while [ "$epilogh" != "1" ]

(δοκιμασα αντι για != να βαλω <> ή και !<> και δεν τρεχει)


Integer comparison για την test: http://www.tldp.org/LDP/abs/html/comparison-ops.html
Νομίζω το -ne είναι αυτό που θες.

το βαζω αλλα υπαρχει προβλημα..στον ελεγχο εδω ειναι ενα script που φτιαχνω
Κώδικας: Επιλογή όλων
#!/bin/sh
# Author: Giwrgos Atmatsidis
#First Run of Script
epilogh="0"
echo "-----MENU-----"
echo ""
echo "Xαίρεται $USER τι θα θέλατε να κάνετε ; [πατήστε το πλήκτρο της επιλογής σας]."
echo ""
echo "1.Eνημέρωση - Aναβάθμιση"
echo "2.Θέλω να καθαρίσω το λειτουργικό μου σύστημα Ubuntu."
echo "3.Θέλω να καθαρίσω τους παλιούς πυρήνες."
echo "4.Έχω πρόβλημα στο Τερματικό καθώς εκτελώ 'apt-get update' 'apt-get upgrade'"
echo "0.Έξοδος"
echo "Πατήστε την επιλογή σας παρακάτω"
  read epilogh
#cheak for correct entry
while [ "$epilogh" -ne "0" ] || [ "$epilogh" -ne "1" ] || [ "$epilogh" -ne "2" ]
do
   if [ "$epilogh" = "0" ] ; then
      echo "Bye"
      exit
   else   
      echo "Έχετε δώσει λάθος εντολή.Παρακαλώ πληκτρολογήστε την σωστή επιλογή ή το 0 για έξοδο"
      read epilogh
   fi
done
#end of cheak correct entry


if [ "$epilogh" = "1" ] ; then
#update
   echo "Έχετε πραγματοποιήση ενημέρωση και αναβάθμιση του συστήματος στις">logfile #create and write on logfile
    date >>logfile #create and write on logfile
    sudo apt-get update #run command
    echo "Παρακαλώ αναμένεται καθώς η διαδικασία καταγράφετε στο αρχείο"
    echo "" >>logfile
    echo "" >>logfile
    sudo apt-get update >>logfile #create and write on logfile the command output
    echo "" >>logfile
    echo "" >>logfile
#upgrade
sudo apt-get upgrade
    echo "Παρακαλώ αναμένεται καθώς η διαδικασία καταγράφετε στο αρχείο"
    echo "" >>logfile
    echo "" >>logfile
    sudo apt-get upgrade >>logfile
    echo ""
    echo "Σας παροτρύνει το Τερματικό να χρησιμοποιήσετε την εντολη 'apt-get autoremove' ? εάν ναι τότε υπάρχουν πακέτα που δεν χρειάζονται πλέον πατήστε ΕΝΤΕR για να την εκτελέσετε.H οποιοδήποτε άλλο πλήκτρο για να συνεχίσετε "
    read term   
fi   
#cheak users answer about autoremove
if [ "$term" = "" ] ; then
   sudo apt-get autoremove
    echo "Παρακαλώ αναμένεται καθώς η διαδικασία καταγράφετε στο αρχείο"
    echo "" >>logfile
    echo "" >>logfile
    sudo apt-get autoremove >>logfile
    echo ""
fi
  #clean
  if [ "$epilogh" = "2" ] ; then
   echo "Έχετε πραγματοποιήση τακτοποίηση πακέτων του συστήματος στις">logfile #create and write on logfile
    date >>logfile #create and write on logfile
    sudo apt-get --purge autoremove #run command
    sudo apt-get autoremove #run command
    sudo apt-get autoclean #run command
    sudo apt-get purge $(dpkg -l | awk '/^rc/ { print $2 }') aptitude search '~c' -F '%p' | xargs -n 30 sudo aptitude -y purge
    echo "Παρακαλώ αναμένεται καθώς η διαδικασία καταγράφετε στο αρχείο"
    echo "" >>logfile
    echo "" >>logfile
    sudo apt-get --purge autoremove >>logfile #Write on logfile the command output
    sudo apt-get autoremove>>logfile #Write on logfile the command output
    sudo apt-get autoclean>>logfile #Write on logfile the command output
    sudo apt-get purge $(dpkg -l | awk '/^rc/ { print $2 }') aptitude search '~c' -F '%p' | xargs -n 30 sudo aptitude -y purge>>logfile #Write on logfile the command output
    echo "" >>logfile
    echo "" >>logfile
fi 

Αυτο εδω το κομματι δεν λειτουργει σωστα...Γνωριζω πως η while εκτελει τις εντολες ΜΟΝΟ οταν ειναι True..σε αυτο εδω το κομματι θελω να κανω ελεγχο ορθοτητας τιμων και δεν λειτουργει.
Κώδικας: Επιλογή όλων
#cheak for correct entry
while [ "$epilogh" -ne "0" ] || [ "$epilogh" -ne "1" ] || [ "$epilogh" -ne "2" ]
do
   if [ "$epilogh" = "0" ] ; then
      echo "Bye"
      exit
   else   
      echo "Έχετε δώσει λάθος εντολή.Παρακαλώ πληκτρολογήστε την σωστή επιλογή ή το 0 για έξοδο"
      read epilogh
   fi
done
#end of cheak correct entry

μονο στο
Κώδικας: Επιλογή όλων
while [ "$epilogh" -ne "0" ]
λειτουργει σωστα και αν δεν δωσω το 0 με βγαζει το μηνυμα οτι εχω δωσει λαθος τιμη..Τι κανω λαθος..(οι τελεστες ειναι διαφορετικη απο οσο νομιζα ) θα πρεπει να υπαρχει καποια θεωρια με τις παρενθεσεις που δεν ξερω στο Shell.