3

if ステートメントが正しく機能していないようです。if ステートメントの結果に関係なく、プログラムが起動します。私は何を逃したのですか?

#!/bin/bash

dtime=($(date |cut -c12-13))
sevenO="19"
redshift=($(gtk-redshift -l -31.9530044:115.8574693))

if ( [[ "$dtime" -gt "$sevenO" ]])
then
    $redshift
fi
4

1 に答える 1

6

gtk-redshift午後 8 時から午前 0 時までの時間帯にのみ実行したいというのは理解できますか? もしそうなら、問題はこの表記法です:

$(...)

コマンド... をすぐに実行し、その出力を評価します。したがって、このステートメント:

redshift=($(gtk-redshift -l -31.9530044:115.8574693))

コマンドを実行しgtk-redshift -l -31.9530044:115.8574693、変数redshiftをそのコマンドの出力を含む配列に設定します。(周囲の のための配列(...)。Bash では、括弧は単なるグループ化には使用されないことに注意してください。括弧には実際の動作 (この場合は配列の作成など) があり、使用しない場所では使用しないでください。それらの動作は必要ありません。)

Bash スクリプトを次のように簡略化できます。

#!/bin/bash

if [[ "$(date +%k)" -ge 20 ]] ; then
    gtk-redshift -l -31.9530044:115.8574693
fi
于 2012-12-16T00:41:50.663 に答える