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
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
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