
Ich habe ein Problem beim Schreiben eines Skripts für „Zenity“. Ich möchte einen Kommentar zufällig aus einer Liste auswählen und ihn dann auf dem Bildschirm anzeigen lassen, damit der Benutzer ihn sehen kann. Ehrlich gesagt würde ich das Programm gerne etwa alle zwei Stunden automatisch ausführen lassen, aber ich habe keine Ahnung, wie ich das erreichen soll. Ich bin neu im Bash-Skripting und versuche einfach, es mir selbst durch Google-Suchen, den Bash-Skripting-Leitfaden und durch Ausprobieren beizubringen. Dieses Programm wird am Ende alle paar Stunden eine zufällige dumme Bemerkung generieren; nur zur komischen Auflockerung.
#! /bin/bash
#Create a random number between 0 and 3
RANGE=4
number=$RANDOM
let "number %= $RANGE"
echo $number
#Set random number generated above to select from list of comments.
if ($number == 0); then
COMMENT=Comment0
elif ($number == 1); then
COMMENT=Comment1
elif ($number == 2); then
COMMENT=Comment2
elif ($number == 3); then
COMMENT=Comment3
echo $COMMENT
zenity --warning --title='!!!WARNING!!!' text=$COMMENT
Wie dem auch sei, ich habe große Probleme mit den „if“-Anweisungen. Soweit ich das bisher gelernt habe, sieht es für mich richtig aus, aber ich bekomme trotz vieler Bearbeitungsversuche nur Fehlermeldungen. Ich würde mich über die Hilfe von allen Interessierten freuen.
Danke
Antwort1
Das Skript ist fast gut. Habe aber ein Problem mit Klammern bei der Verwendung if
. Dies müssen eckige Klammern ( [ ... ]
) sein:
#!/bin/bash
#Create a random number between 0 and 3
RANGE=4
number=$RANDOM
let number%=$RANGE
echo $number
#Set random number generated above to select from list of comments.
if [ $number = 0 ]; then
COMMENT="Comment0"
elif [ $number = 1 ]; then
COMMENT="Comment1"
elif [ $number = 2 ]; then
COMMENT="Comment2"
elif [ $number = 3 ]; then
COMMENT="Comment3"
fi
echo $COMMENT
zenity --warning --title="!!!WARNING!!!" --text="$COMMENT"
Siehe auch die anderen kleinen Modifikationen.
Mehr über:
Antwort2
Ich würde ein etwas anderes Setup wählen und ein Array verwenden:
#!/bin/bash
comments[1]="This is the first comment"
comments[2]="This is the second comment"
comments[3]="This is the third comment"
comments[4]="This is the last comment"
zenity --warning --title="Raa" --text="${comments[ 1 + RANDOM % ${#comments[@]}]]}"
In der letzten Zeile passiert der ganze clevere Kram. ${#comments[@]}
stellt die Anzahl der Elemente im Kommentar-Array dar, also suchen wir eine Zahl zwischen 0 und dieser Zahl (0-3) und addieren 1.