gpt4 book ai didi

mysql - BASH - 如果 $TIME 在上午 8 点到下午 1 点之间做..,esle 做.. 在 BASH 中指定时间变量和 if 语句

转载 作者:IT老高 更新时间:2023-10-29 00:10:19 26 4
gpt4 key购买 nike

我需要在某个时间范围内在 BASH 中输入某些内容时运行一个命令,如果不是那个时间,则运行另一个命令。这是我到目前为止所得到的,但它似乎没有用..

FLATTIME=$(date "+%H%M")
FLATTIME=${FLATTIME##0}

if ! [[ $FLATTIME -gt 1130 ]] ; then
mysql --host=192.168.0.100 --user=myself --password=mypass thedb << EOF
INSERT INTO $STAFFID values ('','$STAFFID','$THETIME','','$THEDATE','$DAYOFWEEK');
EOF

else
mysql --host=192.168.1.92 --user=myself --password=mypass thedb << EOF
UPDATE $STAFFID SET Out_Time='$THETIME' WHERE date='$THEDATE';
EOF
fi

理想情况下,我想要的是:如果时间在上午 8 点到下午 1 点之间,则执行第一个命令,如果时间在下午 1 点到晚上 11 点之间,则执行第二个命令,否则回显“某人工作时间太长”。我尝试了一些变体,但没有成功,无论我做什么,它似乎都在运行第一个命令..

最佳答案

在这种情况下,您只需要查看小时即可。此外,bash 具有指定数字基数的语法,因此您不必担心 08 和 09 是无效的八进制数:

H=$(date +%H)
if (( 8 <= 10#$H && 10#$H < 13 )); then
echo between 8AM and 1PM
elif (( 13 <= 10#$H && 10#$H < 23 )); then
echo between 1PM and 11PM
else
echo go to bed
fi

"10#$H"是变量的内容,以 10 为基数。


实际上,最好使用 %k 而不是 %H 来避免无效的八进制问题。

H=$(date -d '08:45' "+%H")
(( 13 <= H && H < 23 )) && echo ok || echo no
bash: ((: 08: value too great for base (error token is "08")

对比

H=$(date -d '08:45' "+%k")
# ....................^^
(( 13 <= H && H < 23 )) && echo ok || echo no
no

关于mysql - BASH - 如果 $TIME 在上午 8 点到下午 1 点之间做..,esle 做.. 在 BASH 中指定时间变量和 if 语句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18128573/

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