web-dev-qa-db-fra.com

Exécution d'un script zenity avec des instructions if

J'ai du mal à écrire un script pour "zenity". Mon intention est d'avoir un commentaire sélectionné au hasard dans une liste, puis affiché sur l'écran pour que l'utilisateur puisse le voir. Pour être honnête, j'aimerais que le programme s'exécute automatiquement toutes les deux heures environ, mais je ne sais pas comment y arriver. Je suis nouveau dans le script bash et j'essaie simplement de m'enseigner à travers les recherches Google, le guide de script bash et les essais et erreurs. Ce programme va, en fin de compte, générer une remarque stupide aléatoire toutes les deux heures; purement pour le soulagement comique.

#! /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

Quoi qu'il en soit, j'ai beaucoup de mal avec les déclarations "si". D'après ce que j'ai appris jusqu'à présent, cela me semble juste; mais je ne reçois que des erreurs malgré de nombreuses tentatives de modifications. Je voudrais certainement de l'aide de toute personne intéressée.

Merci

1
risto

Le script est presque bon. Mais rencontrez un problème avec les crochets lorsque vous utilisez if. Ceux-ci doivent être entre crochets ([ ... ]):

#!/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"

Voir aussi les autres petites modifications.

Plus à propos:

1
Radu Rădeanu

J'opterais pour une configuration légèrement différente, en utilisant un tableau:

#!/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[@]}]]}"

La dernière ligne est l'endroit où toutes les choses intelligentes se produisent. ${#comments[@]} représente le nombre d'éléments dans le tableau de commentaires, nous trouvons donc un nombre entre 0 et ce nombre (0-3) et ajoutons 1.

0
Oli