web-dev-qa-db-ja.com

ifステートメントでzenityスクリプトを実行する

「zenity」のスクリプトを書くときに問題があります。私の意図は、コメントをリストからランダムに選択し、画面に表示してユーザーに表示することです。正直に言うと、プログラムが2時間ごとに自動的に実行されるようにしたいのですが、それを実現する方法がわかりません。私は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

とにかく、私は 'if'ステートメントで多くの問題を抱えています。私がこれまでに学んだことから、それは私には正しいように見えます。しかし、多くの試みられた編集にもかかわらず、私はエラーのみを受け取ります。興味のある方は是非手伝ってください。

ありがとう

1
risto

スクリプトはほぼ良好です。ただし、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"

他の小さな変更も参照してください。

詳細:

1
Radu Rădeanu

配列を使用して、少し異なる設定を行います。

#!/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[@]}は、comments配列内の要素の数を表すため、0とその数(0-3)の間の数を見つけて、1を追加します。

0
Oli