
У меня проблема с написанием скрипта для 'zenity'. Я хочу, чтобы комментарий выбирался случайным образом из списка и отображался на экране для просмотра пользователем. Честно говоря, я бы хотел, чтобы программа запускалась автоматически каждые два часа или около того, но я понятия не имею, как это сделать. Я новичок в написании скриптов bash и просто пытаюсь научиться этому сам с помощью поиска в Google, руководства по написанию скриптов bash и проб и ошибок. В конце концов, эта программа будет генерировать случайное глупое замечание каждые пару часов; чисто для комического эффекта.
#! /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
В любом случае, у меня большие проблемы с утверждениями «если». Из того, что я узнал на данный момент, мне кажется, что все правильно; но я получаю только ошибки, несмотря на многочисленные попытки редактирования. Я бы очень хотел получить помощь от любого заинтересованного.
Спасибо
решение1
Скрипт почти хорош. Но есть проблема со скобками при использовании if
. Это должны быть квадратные скобки ( [ ... ]
):
#!/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"
См. также другие небольшие изменения.
Больше о:
решение2
Я бы выбрал немного другую настройку, используя массив:
#!/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[@]}]]}"
В последней строке происходит вся хитрость. ${#comments[@]}
представляет собой количество элементов в массиве комментариев, поэтому мы находим число от 0 до этого числа (0-3) и прибавляем 1.