gpt4 book ai didi

linux - 值是否在 bash shell 的范围内

转载 作者:太空狗 更新时间:2023-10-29 11:27:50 25 4
gpt4 key购买 nike

bash shell 中,如何以最有效的方式检查值是否在范围内?

例子:

     now=`date +%H%M`

if [ $now -ge 2245 ] && [ $now -le 2345 ] ; then
...
fi

...这个可以工作,但是使用 now 变量。

其他选项是:

     if [ $((`date +%H%M`)) -ge 2245 ] && [ $((`date +%H%M`)) -le 2345 ] ; then
...
fi

...没有变量,但执行了两次 date

如何用一次 date 执行并且根本没有变量?

最佳答案

首先,作为一般规则,我很确定您需要使用变量或运行命令两次以对任意数字进行多重比较。没有 if [ 1000 -lt $(date '+%H%M') -lt 2000 ]; 这样的符号。

此外,您不需要将反引号命令放在 $((...)) 中。反引号命令的结果是一个字符串,/bin/[ 将被 -gt 或 -le 解释为一个数字。

if [ `date '+%H%M'` -gt 2245 -a `date '+%H%M'` -lt 2345 ]; then

也就是说,作为示例中时间的一个选项,您可以尝试使用更智能的 date 命令行。

在 FreeBSD 中:

if [ `date -v-45M '+%H'` -eq 22 ]; then

或者在 Linux 中:

if [ `date -d '45 minutes ago' '+%H'` -eq 22 ]; then

关于linux - 值是否在 bash shell 的范围内,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9636273/

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