Ell*_*eed 13 mysql variables bash
我需要在某个时间范围内输入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
Run Code Online (Sandbox Code Playgroud)
理想情况下我想要的是:如果时间是在早上8点到下午1点之间执行第一个命令,如果时间是在下午1点到晚上11点之间执行第二个命令,否则回应"某人已经在工作太长时间".我尝试了一些变化,但没有运气,它似乎只是运行第一个命令,无论我做什么..
gle*_*man 29
在这种情况下,您只需要查看小时.另外,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
Run Code Online (Sandbox Code Playgroud)
"10#$ H"是变量的内容,以10为基数.
实际上,最好使用%k
而不是%H
避免无效的八进制问题.
H=$(date -d '08:45' "+%H")
(( 13 <= H && H < 23 )) && echo ok || echo no
Run Code Online (Sandbox Code Playgroud)
bash: ((: 08: value too great for base (error token is "08")
Run Code Online (Sandbox Code Playgroud)
与
H=$(date -d '08:45' "+%k")
# ....................^^
(( 13 <= H && H < 23 )) && echo ok || echo no
Run Code Online (Sandbox Code Playgroud)
no
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
18310 次 |
最近记录: |