特定の時間にキーボードライトが点灯するようにbashスクリプトを作成しました。しかし、私はまだそれを動作させていません。 「light」コマンドを確認しましたが、動作します。条件が満たされていることを確認するために、エコードアも含めましたが、すべてスキップしているようです。
「test」出力をファイルにプロットし、コマンドが作成されたため、スクリプトが正常に実行されたことを知っています。
私が間違っていることを知っている人はいますか?
愚かな質問なので申し訳ありません...
#!/bin/bash
currenttime=$(date +%H:%M)
echo test
if [[ "$currenttime" > "17:00" ]]; then
if [[ "$currenttime" < "18:00" ]]; then
light -Srs "sysfs/leds/chromeos::kbd_backlight" 25
echo 1
fi
fi
if [[ "$currenttime" > "18:00" ]]; then
if [[ "$currenttime" < "19:00" ]]; then
light -Srs "sysfs/leds/chromeos::kbd_backlight" 50
echo 2
fi
fi
if [[ "$currenttime" > "19:00" ]]; then
if [[ "$currenttime" < "20:00" ]]; then
light -Srs "sysfs/leds/chromeos::kbd_backlight" 75
echo 3
fi
fi
if [[ "$currenttime" > "20:00" ]]; then
if [[ "$currenttime" < "06:00" ]]; then
light -Srs "sysfs/leds/chromeos::kbd_backlight" 100
echo 4
fi
fi
if [[ "$currenttime" < "07:00" ]]; then
if [[ "$currenttime" > "06:00" ]]; then
light -Srs "sysfs/leds/chromeos::kbd_backlight" 50
echo 5
fi
fi
if [[ "$currenttime" > "7:00" ]]; then
if [[ "$currenttime" < "17:00" ]]; then
light -Srs "sysfs/leds/chromeos::kbd_backlight" 0
echo 6
fi
fi
答え1
$currenttimeの値をテストするのではなく、$currentime値を持つ文字列をテストするだけです。 「$currenttime」の周りの引用符を削除する必要があります。
このように:
if [[ $currenttime > "17:00" ]]; then
しかし、cronjobでコマンドを実行する方が簡単かもしれません。このスクリプトを起動する方法はわかりませんが、cronjobで実行して毎分実行すると、毎分ライトプログラムに値を調整するように指示されます。必要な正確な設定時間でコマンドを実行する方が、より合理的です。
0 18 * * * light -Srs "sysfs/leds/chromeos::kbd_backlight" 25 >/dev/null 2>&1
0 19 * * * light -Srs "sysfs/leds/chromeos::kbd_backlight" 50 >/dev/null 2>&1
0 20 * * * light -Srs "sysfs/leds/chromeos::kbd_backlight" 100 >/dev/null 2>&1
0 6 * * * light -Srs "sysfs/leds/chromeos::kbd_backlight" 50 >/dev/null 2>&1
0 7 * * * light -Srs "sysfs/leds/chromeos::kbd_backlight" 0 >/dev/null 2>&1
編集する:
それとも、毎分スクリプトを実行して照明値を増やすことは(max_light_val / minutes_till_next_setting)
楽しいでしょう。 :)