if文でzenityスクリプトを実行する

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

スクリプトはほぼ良好です。ただし、 を使用する場合、括弧に問題があります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 を加算します。

関連情報