
'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 を加算します。