Σελ. 116 από 149 ΠρώτηΠρώτη ... 96106111114115116117118121126136 ... ΤελευταίαΤελευταία
Εμφάνιση 1.726-1.740 από 2222
  1. #1726
    Εγγραφή
    23-03-2006
    Μηνύματα
    333
    Downloads
    5
    Uploads
    0
    Εχω ένα script που κάνει χρήση του whiptail με μια λίστα όπου η επιλογή ενός αντικειμένου αποθηκεύεται στη μεταβλητή choise.
    Για αρκετό καιρό το είχα έτσι και λειτουργούσε:
    Κώδικας:
    if [ -z "$choise" ]; then
      echo "Δεν επιλέχθηκε κάποιο αντικείμενο τη. (Ακυρώθηκε)"
    else	
    	#"startx ~/.xinitrc $choise  --:1 vt3
    fi
    Τώρα όμως θέλω να προσθέσω 2 επιλογές που δε βρίσκονται στο xinit, οπότε το έκανα έτσι:

    Κώδικας:
    if [ "$choice"==wayfire ]; then
    	exec wayfire
    elif [ "$choice"==sway ]; then
    	exec "sway"
    elif [ -z "$choise" ]; then
      echo "Δεν επιλέχθηκε κανένα γραφικό περιβάλλον. (Ακυρώθηκε)"
    else	
    	#"startx ~/.xinitrc $choise  --:1 vt3
    fi
    αλλά βγάζει σφάλμα για τις δύο γραμμές:
    =wayfire Η εντολή δε βρέθηκε.
    =sway Η εντολή δε βρέθηκε.
    Που κάνω λάθος?

  2. #1727
    Εγγραφή
    28-02-2006
    Μηνύματα
    1.162
    Downloads
    0
    Uploads
    0
    ISP
    Cosmote
    DSLAM
    ΟΤΕ - ΓΑΛΑΤΣΙ
    Παράθεση Αρχικό μήνυμα από zaxus Εμφάνιση μηνυμάτων
    αλλά βγάζει σφάλμα για τις δύο γραμμές:
    =wayfire Η εντολή δε βρέθηκε.
    =sway Η εντολή δε βρέθηκε.
    Που κάνω λάθος?
    Προφανώς δεν του αρέσει που βάζεις τα strings ("wayfire" , "sway") χύμα χωρίς quotes, στην πρώτη και την τρίτη γραμμή.
    Επίσης, φρόντισε τα εν λόγω εκτελέσιμα να είναι στο $PATH του account που εκτελεί το script ή εναλλακτικά βάλε τα full paths τους.
    NetBSD Rocks!
    http://www.netbsd.org

  3. #1728
    Εγγραφή
    23-03-2006
    Μηνύματα
    333
    Downloads
    5
    Uploads
    0
    Έτσι ναι δε βγάζει σφάλμα, αλλά πάντα επιλέγει το πρώτο απ' τα δύο. Για δοκιμή έχω απενεργοποιήσει τις εντολές. Δηλαδή τα έχω:
    echo "wayfire" και echo "sway", ώστε να μη φορτώνει ο xserver.
    Το θέμα είναι ότι είτε επιλέξω το sway είτε το wayfire(αυτό είναι πρώτο στη λίστα και προεπιλεγμένο), παίρνω πάντα το wayfire ως αποτέλεσμα.
    Επίσης πρίν από τα if/elif/else έχω βάλει ένα
    Κώδικας:
    echo $choise
    Όταν λοιπόν επιλέγω το sway, παρότι το παραπάνω echo εμφανίζει το sway, μετά αλλάζει σε wayfire. Φαίνεται δηλαδή πως αγνοείται η elif για το sway.

  4. #1729
    Εγγραφή
    28-02-2006
    Μηνύματα
    1.162
    Downloads
    0
    Uploads
    0
    ISP
    Cosmote
    DSLAM
    ΟΤΕ - ΓΑΛΑΤΣΙ
    Παράθεση Αρχικό μήνυμα από zaxus Εμφάνιση μηνυμάτων
    Όταν λοιπόν επιλέγω το sway, παρότι το παραπάνω echo εμφανίζει το sway, μετά αλλάζει σε wayfire. Φαίνεται δηλαδή πως αγνοείται η elif για το sway.
    Δεν χρησιμοποιείς τον σωστό τελεστή. Για string comparison, θέλει "=" και όχι "==". Π.χ. δοκίμασε αυτό:

    Κώδικας:
    #!/bin/bash
    
    choice=$1
    
    if [ "$choice" = "wayfire" ]; then
    	echo wayfire
    elif [ "$choice" = "sway" ]; then
    	echo "sway"
    elif [ -z "$choice" ]; then
    	echo "Δεν επιλέχθηκε κανένα γραφικό περιβάλλον. (Ακυρώθηκε)"
    else	
    	echo "Starting $choice"
    fi
    Θα δεις ότι δουλεύει.
    NetBSD Rocks!
    http://www.netbsd.org

  5. #1730
    Εγγραφή
    23-03-2006
    Μηνύματα
    333
    Downloads
    5
    Uploads
    0
    Όχι, το ίδιο γίνεται.

    Εδώ και η λίστα(μήπως και παιζει ρόλο)
    Κώδικας:
    #!/bin/bash
    choise=$(whiptail --title "ΓΡΑΦΙΚΑ ΠΕΡΙΒΑΛΛΟΝΤΑ" --radiolist "Επιλέξτε ένα γραφικό περιβάλλον:" 0 0 0 \
    wayfire "1" on \
    sway "2" off \
    windowmaker "3" off \
    pekwm "4" off \
    fluxbox "5" off \
    lxqt "6" off \
    plasma "7" off \
    cinnamon "8" off \
    twm "9" off 3>&1 1>&2 2>&3)
    - - - Updated - - -

    Μετά από αρκετό trial & error δουλεύει το εξής:

    Κώδικας:
    var="$choise"
    
    if [ "$var" = "wayfire" ]; then
    	echo "wayfire"
    elif [ "$var" = "sway" ]; then
    	echo "sway"
    elif [ -z "$var" ]; then
    	echo "Δεν επιλέχθηκε κανένα γραφικό περιβάλλον. (Ακυρώθηκε)"
    else	
    	echo "Starting " $var
    fi
    Φαίνεται δηλαδή πως πρέπει να αποθηκευτεί η επιλογή σε μία άλλη μεταβλητή και να χρησιμοποιηθεί αυτή.
    Τελευταία επεξεργασία από το μέλος zaxus : 15-07-22 στις 20:23.

  6. #1731
    Εγγραφή
    28-02-2006
    Μηνύματα
    1.162
    Downloads
    0
    Uploads
    0
    ISP
    Cosmote
    DSLAM
    ΟΤΕ - ΓΑΛΑΤΣΙ
    Παράθεση Αρχικό μήνυμα από zaxus Εμφάνιση μηνυμάτων
    Όχι, το ίδιο γίνεται.
    Όχι, κάνεις λάθος, δεν γίνεται το ίδιο:

    Κώδικας:
    basil@mylen:~/Downloads$ cat test.sh 
    #!/bin/bash
    
    choice=$1
    
    if [ "$choice" = "wayfire" ]; then
    	echo wayfire
    elif [ "$choice" = "sway" ]; then
    	echo "sway"
    elif [ -z "$choice" ]; then
    	echo "Δεν επιλέχθηκε κανένα γραφικό περιβάλλον. (Ακυρώθηκε)"
    else	
    	echo "Starting $choice"
    fi
    basil@mylen:~/Downloads$ ./test.sh 
    Δεν επιλέχθηκε κανένα γραφικό περιβάλλον. (Ακυρώθηκε)
    basil@mylen:~/Downloads$ ./test.sh wayfire
    wayfire
    basil@mylen:~/Downloads$ ./test.sh sway
    sway
    basil@mylen:~/Downloads$ ./test.sh other
    Starting other
    Να ξέρεις ότι ποτέ δεν δίνω ατεστάριστο κώδικα...
    NetBSD Rocks!
    http://www.netbsd.org

  7. #1732
    Εγγραφή
    23-03-2006
    Μηνύματα
    333
    Downloads
    5
    Uploads
    0
    Καμία αντίρρηση. Άλλωστε αυτό χρησιμοποίησα.
    Το πρόβλημα φαίνεται ότι προέρχεται από τη λίστα του whiptail.

  8. #1733
    Εγγραφή
    08-03-2007
    Μηνύματα
    23.521
    Downloads
    25
    Uploads
    0
    ISP
    ΟΤΕ Conn-x
    Πειτε μου που κανω λαθος εδω. Θελω να παρω τη χτεσινη ημερομηνια σε μορφη πχ 20220716, οποτε δινω αυτο
    Κώδικας:
    date --date=yesterday +%Y%m%d
    και στο pc, που το date ειναι κομματι του coreutils, μου βγαζει κανονικα
    Κώδικας:
    $ date --date=yesterday +%Y%m%d
    20220716
    αλλα στο !@#$%^&* το libreelec που το date ειναι κομματι του busybox δεν καταλαβαινει το yesterday
    Κώδικας:
    # date --date=yesterday +%Y%m%d
    date: invalid date 'yesterday'
    ενω υποστηριζει κανονικα την παραμετρο --date!
    Κώδικας:
    # date --help
    BusyBox v1.32.1 (2022-07-16 22:08:16 UTC) multi-call binary.
    
    Usage: date [OPTIONS] [+FMT] [TIME]
    
    Display time (using +FMT), or set time
    
            [-s,--set] TIME Set time to TIME
            -u,--utc        Work in UTC (don't convert to local time)
            -R,--rfc-2822   Output RFC-2822 compliant date string
            -I[SPEC]        Output ISO-8601 compliant date string
                            SPEC='date' (default) for date only,
                            'hours', 'minutes', or 'seconds' for date and
                            time to the indicated precision
            -r,--reference FILE     Display last modification time of FILE
            -d,--date TIME  Display TIME, not 'now'
            -D FMT          Use FMT (strptime format) for -d TIME conversion
    
    Recognized TIME formats:
            hh:mm[:ss]
            [YYYY.]MM.DD-hh:mm[:ss]
            YYYY-MM-DD hh:mm[:ss]
            [[[[[YY]YY]MM]DD]hh]mm[.ss]
            'date TIME' form accepts MMDDhhmm[[YY]YY][.ss] instead
    ديميتريس

  9. #1734
    Εγγραφή
    23-03-2006
    Μηνύματα
    333
    Downloads
    5
    Uploads
    0
    Δεν κάνεις λάθος, το busybox δεν το υποστηρίζει απλά. Εδώ έχει κάποιες εναλλακτικές:
    https://busybox.busybox.narkive.com/...sterday-s-date

  10. #1735
    Εγγραφή
    08-03-2007
    Μηνύματα
    23.521
    Downloads
    25
    Uploads
    0
    ISP
    ΟΤΕ Conn-x
    Αν δεν το υπστηριζει, γιατι εχει την --date σαν παραμετρο στο help του?

    Τις ειδα τις οποιες εναλλακτικες υπαρχουν και πρακτικα υπολογιζουν το χρονο μεχρι τοτε αφαιρωντας τα δευτερολεπτα μιας ημερας. Δεν θελω κατι τετοιο, γιατι θα χρειαστω ακομα μια μεταβλητη για αυτο μονο. 1000 φορες δηλαδη να τη βαζω εγω και να τη διαβαζει με ενα read!
    ديميتريس

  11. #1736
    Εγγραφή
    08-03-2007
    Μηνύματα
    23.521
    Downloads
    25
    Uploads
    0
    ISP
    ΟΤΕ Conn-x
    Θελω να σκαλισω το kodi και ψαχνω ενα σκριπτακι για να μην κανω χειροκινητα την παρακατω διαδικασια.
    Backup του log > σκαλισμα του kodi> νεο backup του log > ξανασκαλισμα κλπ, ολο αυτο 5-6 φορες συνολικα. Οποτε θελω ενα σκρπτακι που θα κανει σε loop κατι τετοιο
    Κώδικας:
    cp .kodi/temp/kodi.log backup/
    pause
    (σκαλισμα και παλι απο την αρχη)
    Θα χρειαστω for για αυτο? Αν ναι, δεν πρεπει να το ορισω ποσες φορες θα το κανει? Και τι μπορω να κανω ωστε το καθε παλιο αρχειο να μην γινετια overwrite απο το νεο?
    ديميتريس

  12. #1737
    Εγγραφή
    28-02-2007
    Μηνύματα
    751
    Downloads
    0
    Uploads
    0
    Παράθεση Αρχικό μήνυμα από jim_p Εμφάνιση μηνυμάτων
    Αν δεν το υπστηριζει, γιατι εχει την --date σαν παραμετρο στο help του?

    Τις ειδα τις οποιες εναλλακτικες υπαρχουν και πρακτικα υπολογιζουν το χρονο μεχρι τοτε αφαιρωντας τα δευτερολεπτα μιας ημερας. Δεν θελω κατι τετοιο, γιατι θα χρειαστω ακομα μια μεταβλητη για αυτο μονο. 1000 φορες δηλαδη να τη βαζω εγω και να τη διαβαζει με ενα read!
    Tα busybox applets δεν υποστηρίζουν όλα τα arguments των gnu coreutils ή των προγραμμάτων που περιέχονται στο util-linux.
    Συνήθως ότι το subset που υποστηρίζουν είναι επαρκές, αλλά είναι πολύ πιθανό να "πέσεις" πάνω σε ελλείψεις.
    It is wrong to put temptation in the path of any nation,/For fear they should succumb and go astray;
    So when you are requested to pay up or be molested,/You will find it better policy to say: --
    "We never pay any-one Dane-geld,/No matter how trifling the cost;
    For the end of that game is oppression and shame,/And the nation that plays it is lost!"
    Rudyard Kipling

  13. #1738
    Εγγραφή
    08-03-2007
    Μηνύματα
    23.521
    Downloads
    25
    Uploads
    0
    ISP
    ΟΤΕ Conn-x
    Επειδη modern problems σαν το παραπανω require modern solutions, εβαλα στο σκριπτακι μου να ζηταει και την ημερομηνια με ενα read, οποτε εκανα το σκριπτακι ετσι
    Κώδικας:
    #!/bin/bash
    source /etc/os-release
    echo You are on $VERSION for $LIBREELEC_ARCH
    read -p 'Date ' thedate
    read -p 'Commit ' thecommit
    echo Downloading image $thedate-$thecommit
    wget --spider https://test.libreelec.tv/11.0/$LIBREELEC_PROJECT/$LIBREELEC_DEVICE/LibreELEC-$LIBREELEC_ARCH-11.0-nightly-$thedate-$thecommit.img.gz
    #mv *.img.gz .update/
    Για να δουλεψει απαιτειται αφαιρεση του spider απο το wget και να φυγει το καγκελο απο την τελευταια γραμμη.
    ديميتريس

  14. #1739
    Εγγραφή
    28-02-2006
    Μηνύματα
    1.162
    Downloads
    0
    Uploads
    0
    ISP
    Cosmote
    DSLAM
    ΟΤΕ - ΓΑΛΑΤΣΙ
    Αν το libreelec έχει awk, δοκίμασε να τραβήξεις την τρέχουσα ημερομηνία, έτσι:

    Κώδικας:
    thedate=`awk 'BEGIN { print strftime("%Y%m%d", systime()) }'`
    EDIT Τώρα πρόσεξα ότι θες την χθεσινή ημερομηνία, οπότε παίξε μπάλα έτσι:

    Κώδικας:
    thedate=`awk 'BEGIN { print strftime("%Y%m%d", systime()-86400) }'`
    Τελευταία επεξεργασία από το μέλος Mosfet : 24-07-22 στις 12:24.
    NetBSD Rocks!
    http://www.netbsd.org

  15. #1740
    Εγγραφή
    23-03-2006
    Μηνύματα
    333
    Downloads
    5
    Uploads
    0
    Θέλω ένα πιο γρήγορο τρόπο ν' αλλάζω τον driver από ntfs3 σεν ntfs-3g και το αντίστροφο, χωρίς να χρειάζεται να κάνω απ' ευθείας επεξεργασία του fstab.
    Σκέφτομαι λοιπόν ένα script όπου να παίρνει ως παράμετρο τη διαδρομή του διαμερίσματος(πχ /media/data), να βρίσκει τη γραμμή που ταιριάζει και ν' αλλάζει τον driver από αυτόν που είναι στον άλλον. Πως το κάνω αυτό? (ώστε να μη χαλάσω το αρχείο μιας και είναι ευαίσθητο)
    EDIT:
    Το έκανα έτσι:
    Κώδικας:
    sudo cp /etc/fstab /etc/fstab.bak
    
    choice=$1
    file="/etc/fstab"
    
    function main() {
    line=$(grep -w "$choice" "$file")
    echo $line
    
    if echo $line | grep -q "ntfs-3g"; then
            driver="ntfs-3g"
    elif echo $line | grep -q "ntfs3"; then
            driver="ntfs3"
    else
            echo "nothing found"
    fi
    
    echo $driver
    
    disk="${choice:7}"
    
    echo $disk
    
    echo "$choice"
    sudo umount $choice
    
    if [ "$driver" = "ntfs3" ]; then
            sudo sed -i -e "/$disk/s/$driver/ntfs-3g/" "$file"
    else
            sudo sed -i -e "/$disk/s/$driver/ntfs3/" "$file"
    fi
    
    systemctl daemon-reload
    sudo mount -all
    }
    
    if [ -z "$1" ]; then
       echo "Εισάγετε μια διαδρομή δίσκου"
    else
            main
    fi
    Πιθανότατα να χρείαζεται αρκετές βελτιώσεις, αλλά σε γενικές γραμμές κάνει αυτό που θέλω.
    Τελευταία επεξεργασία από το μέλος zaxus : 28-07-22 στις 22:43.

Σελ. 116 από 149 ΠρώτηΠρώτη ... 96106111114115116117118121126136 ... ΤελευταίαΤελευταία

Παρόμοια Θέματα

  1. Βοήθεια για ένα απλό bash script
    Από AddictedToChaos στο φόρουμ Unix - Linux
    Μηνύματα: 34
    Τελευταίο Μήνυμα: 22-07-11, 01:57
  2. bash - matlab
    Από simeon.mattes στο φόρουμ Unix - Linux
    Μηνύματα: 25
    Τελευταίο Μήνυμα: 25-06-08, 23:00
  3. Bash Script help (Αρχάριος)
    Από weakwire στο φόρουμ Unix - Linux
    Μηνύματα: 12
    Τελευταίο Μήνυμα: 08-05-07, 00:41
  4. bash rename (mv)
    Από hayzel στο φόρουμ Unix - Linux
    Μηνύματα: 6
    Τελευταίο Μήνυμα: 07-01-07, 16:33

Tags για αυτό το Θέμα

Bookmarks

Bookmarks

Δικαιώματα - Επιλογές

  • Δεν μπορείτε να δημοσιεύσετε νέα θέματα
  • Δεν μπορείτε να δημοσιεύσετε νέα μηνύματα
  • Δεν μπορείτε να αναρτήσετε συνημμένα
  • Δεν μπορείτε να επεξεργαστείτε τα μηνύματα σας
  •  
  • Τα BB code είναι σε λειτουργία
  • Τα Smilies είναι σε λειτουργία
  • Το [IMG] είναι σε λειτουργία
  • Το [VIDEO] είναι σε λειτουργία
  • Το HTML είναι εκτός λειτουργίας