Εχω ένα script που κάνει χρήση του whiptail με μια λίστα όπου η επιλογή ενός αντικειμένου αποθηκεύεται στη μεταβλητή choise.
Για αρκετό καιρό το είχα έτσι και λειτουργούσε:
Τώρα όμως θέλω να προσθέσω 2 επιλογές που δε βρίσκονται στο xinit, οπότε το έκανα έτσι:Κώδικας:if [ -z "$choise" ]; then echo "Δεν επιλέχθηκε κάποιο αντικείμενο τη. (Ακυρώθηκε)" else #"startx ~/.xinitrc $choise --:1 vt3 fi
αλλά βγάζει σφάλμα για τις δύο γραμμές:Κώδικας: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 Η εντολή δε βρέθηκε.
Που κάνω λάθος?
Εμφάνιση 1.726-1.740 από 2222
Θέμα: Ερώτηση για bash
-
15-07-22, 19:13 Απάντηση: Ερώτηση για bash #1726
-
15-07-22, 19:27 Απάντηση: Ερώτηση για bash #1727NetBSD Rocks!
http://www.netbsd.org
-
15-07-22, 19:40 Απάντηση: Ερώτηση για bash #1728
Έτσι ναι δε βγάζει σφάλμα, αλλά πάντα επιλέγει το πρώτο απ' τα δύο. Για δοκιμή έχω απενεργοποιήσει τις εντολές. Δηλαδή τα έχω:
echo "wayfire" και echo "sway", ώστε να μη φορτώνει ο xserver.
Το θέμα είναι ότι είτε επιλέξω το sway είτε το wayfire(αυτό είναι πρώτο στη λίστα και προεπιλεγμένο), παίρνω πάντα το wayfire ως αποτέλεσμα.
Επίσης πρίν από τα if/elif/else έχω βάλει ένα
Κώδικας:echo $choise
-
15-07-22, 20:04 Απάντηση: Ερώτηση για bash #1729
Δεν χρησιμοποιείς τον σωστό τελεστή. Για 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
-
15-07-22, 21:06 Απάντηση: Ερώτηση για bash #1730
Όχι, το ίδιο γίνεται.
Εδώ και η λίστα(μήπως και παιζει ρόλο)
Κώδικας:#!/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)
Μετά από αρκετό 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.
-
16-07-22, 09:24 Απάντηση: Ερώτηση για bash #1731
Όχι, κάνεις λάθος, δεν γίνεται το ίδιο:
Κώδικας: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
-
16-07-22, 15:14 Απάντηση: Ερώτηση για bash #1732
Καμία αντίρρηση. Άλλωστε αυτό χρησιμοποίησα.
Το πρόβλημα φαίνεται ότι προέρχεται από τη λίστα του whiptail.
-
17-07-22, 07:20 Απάντηση: Ερώτηση για bash #1733
Πειτε μου που κανω λαθος εδω. Θελω να παρω τη χτεσινη ημερομηνια σε μορφη πχ 20220716, οποτε δινω αυτο
Κώδικας:date --date=yesterday +%Y%m%d
Κώδικας:$ date --date=yesterday +%Y%m%d 20220716
Κώδικας:# date --date=yesterday +%Y%m%d date: invalid date 'yesterday'
Κώδικας:# 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
ديميتريس
-
17-07-22, 07:42 Απάντηση: Ερώτηση για bash #1734
Δεν κάνεις λάθος, το busybox δεν το υποστηρίζει απλά. Εδώ έχει κάποιες εναλλακτικές:
https://busybox.busybox.narkive.com/...sterday-s-date
-
17-07-22, 07:53 Απάντηση: Ερώτηση για bash #1735
Αν δεν το υπστηριζει, γιατι εχει την --date σαν παραμετρο στο help του?
Τις ειδα τις οποιες εναλλακτικες υπαρχουν και πρακτικα υπολογιζουν το χρονο μεχρι τοτε αφαιρωντας τα δευτερολεπτα μιας ημερας. Δεν θελω κατι τετοιο, γιατι θα χρειαστω ακομα μια μεταβλητη για αυτο μονο. 1000 φορες δηλαδη να τη βαζω εγω και να τη διαβαζει με ενα read!ديميتريس
-
20-07-22, 17:28 Απάντηση: Ερώτηση για bash #1736
Θελω να σκαλισω το kodi και ψαχνω ενα σκριπτακι για να μην κανω χειροκινητα την παρακατω διαδικασια.
Backup του log > σκαλισμα του kodi> νεο backup του log > ξανασκαλισμα κλπ, ολο αυτο 5-6 φορες συνολικα. Οποτε θελω ενα σκρπτακι που θα κανει σε loop κατι τετοιο
Κώδικας:cp .kodi/temp/kodi.log backup/ pause (σκαλισμα και παλι απο την αρχη)
ديميتريس
-
23-07-22, 19:42 Απάντηση: Ερώτηση για bash #1737It 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
-
24-07-22, 11:53 Απάντηση: Ερώτηση για bash #1738
Επειδη 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/
ديميتريس
-
24-07-22, 12:07 Απάντηση: Ερώτηση για bash #1739
Αν το libreelec έχει awk, δοκίμασε να τραβήξεις την τρέχουσα ημερομηνία, έτσι:
Κώδικας:thedate=`awk 'BEGIN { print strftime("%Y%m%d", systime()) }'`
Κώδικας:thedate=`awk 'BEGIN { print strftime("%Y%m%d", systime()-86400) }'`
Τελευταία επεξεργασία από το μέλος Mosfet : 24-07-22 στις 12:24.
NetBSD Rocks!
http://www.netbsd.org
-
28-07-22, 17:33 Απάντηση: Ερώτηση για bash #1740
Θέλω ένα πιο γρήγορο τρόπο ν' αλλάζω τον 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.
Παρόμοια Θέματα
-
Βοήθεια για ένα απλό bash script
Από AddictedToChaos στο φόρουμ Unix - LinuxΜηνύματα: 34Τελευταίο Μήνυμα: 22-07-11, 01:57 -
bash - matlab
Από simeon.mattes στο φόρουμ Unix - LinuxΜηνύματα: 25Τελευταίο Μήνυμα: 25-06-08, 23:00 -
Bash Script help (Αρχάριος)
Από weakwire στο φόρουμ Unix - LinuxΜηνύματα: 12Τελευταίο Μήνυμα: 08-05-07, 00:41 -
bash rename (mv)
Από hayzel στο φόρουμ Unix - LinuxΜηνύματα: 6Τελευταίο Μήνυμα: 07-01-07, 16:33
Bookmarks