gpt4 book ai didi

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

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:50:21 24 4
gpt4 key购买 nike

我编写了一个在启动时运行的 bash 脚本,并为周一至周五设置闹钟。周六和周日不需要,所以我修改了脚本以节省那些日子的精力。脚本有效,有点。但是,它总是与第一个“if”语句一起使用。电脑每天在指定时间醒来,只在开机时不执行'== Friday'和'== Saturday'选项。如果我手动运行脚本,则会正确筛选“== Friday”和“== Saturday”选项。

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

#!/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 秒允许我调试脚本。此外,'echo 0' 语句被移到脚本的早期,因为我认为启动中的一些延迟可能有助于时钟(它没有)。

编辑已添加 --- 感谢您就 if-then 代码的最佳实践提出建议。他们是我应该看到自己的好渔获物。虽然,脚本仍然行为不端。要么根本不执行 if 语句,生成一个通知语句,读取“will wake”,意味着没有设置警报,要么不识别周五/周六查询,第二天它仍然醒来。重要说明:您可能会注意到该脚本与 Nvidia GPU 风扇 Controller 交织在一起。这每次都执行。此外,如果从终端运行该脚本是完美的,但如果从启动应用程序运行则只能在大约 80% 的时间内运行。

最佳答案

试试这个:

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

当您可以使用 else 时,第二个 if 似乎是多余的

关于linux - 设置唤醒警报的 bash 脚本设置了错误的时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32168594/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com