Executando um script zenity com instruções if

Executando um script zenity com instruções if

Estou tendo problemas para escrever um script para 'zenity'. Minha intenção é que um comentário seja selecionado aleatoriamente em uma lista e depois exibido na tela para o usuário ver. Para ser sincero, gostaria que o programa fosse executado automaticamente a cada duas horas ou mais, mas não tenho ideia de como fazer isso acontecer. Sou novo em scripts bash e estou simplesmente tentando ensiná-los a mim mesmo por meio de pesquisas no Google, do guia de scripts bash e de tentativa e erro. Este programa irá, no final, gerar um comentário estúpido aleatório a cada duas horas; puramente para alívio cômico.

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

De qualquer forma, estou tendo muitos problemas com as declarações 'if'. Pelo que aprendi até agora, parece-me certo; mas não recebo nada além de erros, apesar de muitas tentativas de edição. Eu certamente gostaria de alguma ajuda de qualquer pessoa interessada.

Obrigado

Responder1

O roteiro é quase bom. Mas tenho um problema com colchetes ao usar if. Devem ser colchetes ( [ ... ]):

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

Veja também as outras pequenas modificações.

Mais sobre:

Responder2

Eu optaria por uma configuração um pouco diferente, usando um array:

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

A última linha é onde todas as coisas inteligentes acontecem. ${#comments[@]}representa o número de elementos na matriz de comentários, portanto, encontraremos um número entre 0 e esse número (0-3) e adicionaremos 1.

informação relacionada