bash脚本设置唤醒警报设置错误的时间

时间:2015-08-23 15:56:39

标签: linux bash time wakeup

我写了一个bash脚本,在启动时运行,并在周一到周五设置闹钟。周六或周日不需要它,所以我修改了脚本以节省一些能量。这个剧本很有用。但是,它始终伴随着第一个' if'声明。计算机每天都会在指定的时间唤醒,并且无法执行' == Friday'和' ==星期六'仅在启动时的选项。如果我手动运行脚本' == Friday'和' ==星期六'选项已正确筛选。

关于为什么会发生这种情况的任何想法。我担心脚本的可靠性。

#!/bin/bash

# see if waiting for the system to start helps get the correct time
sudo sh -c "echo 0 > /sys/class/rtc/rtc0/wakealarm"
sleep 10

nvidia-settings -a [gpu:0]/GPUFanControlState=1
nvidia-settings -a [fan:0]/GPUCurrentFanSpeed=15

day=$(date +%A)
#printf "%s\n" "$day"
#DT=$(date --date='06:19 tomorrow')


if [[ "$day" == "Sunday" || "$day" == "Monday" || "$day" == "Tuesday" || "$day" == "Wednesday" || "$day" == "Thursday" ]]; 
  then
    DTs=$(date --date='06:19:00 tomorrow +22 seconds' +%s)
  fi
if [[ "$day" == "Friday" || "$day" == "Saturday" ]]; 
  then    
    DTs=$(date --date='06:19:00 next Monday' +%s)
  fi

# The RTCWake needs to be set to 0 so that an IO error is not created
sudo sh -c "echo $DTs > /sys/class/rtc/rtc0/wakealarm"
WAKERTC=$(cat /sys/class/rtc/rtc0/wakealarm)
WAKERTC=$(date -d @$WAKERTC)

notify-send "will wake $WAKERTC"
notify-send "NVIDIA Fan set to 15"

仅供参考,额外的22秒允许我调试脚本。此外,回声0'声明在脚本的早期被移动,因为我在启动时有些延迟可能有助于时钟(它没有)。

编辑添加---感谢有关if-then代码的最佳实践的建议。它们是我应该看到的好捕获物。虽然,剧本仍然行为不端。 if语句根本不执行,产生一个notify语句,读取"将唤醒",表示没有设置警报,或者周五/周六查询未被识别,它仍然在第二天醒来。重要说明:您可能会注意到该脚本与Nvidia GPU风扇控制器交错。这每次都会执行。如果从终端运行该脚本也是完美的,但如果从启动应用程序运行,则只能在80%的时间内运行。

1 个答案:

答案 0 :(得分:1)

试试这个:

/profile/abc

当您可以使用if [[ "$day" == "Sunday" || "$day" == "Monday" || "$day" == "Tuesday" || "$day" == "Wednesday" || "$day" == "Thursday" ]]; then DTs=$(date --date='06:19:00 tomorrow +22 seconds' +%s) else DTs=$(date --date='06:19:00 next Monday' +%s) fi

时,第二个if似乎是多余的