分钟现在= date +%M
;
for ((i=2;i<=57;i+=5))
do
if [ "$MinuteNow" == "$i" ]; then
*************
fi
done
问题在于 2 和 7,日期命令输出是 02 和 07,但变量 $i 是 2 和 7...我试图添加一个条件来仅更改这 2 个,但它困扰着循环...
你能给我一点小费吗?
答案1
使用“-eq”来比较数字,那么您就不会遇到这个问题:
if [ "$MinuteNow" -eq "$i" ]; then
应该这么做。
(还有很多其他可能性,其中 ${MinuteNow#0} 是另一个简单的可能性,但我认为使用正确的运算符 -eq 而不是 == 是更好的选择)。
答案2
在 Bash 中,您需要将字符串强制转换为十进制:
if (( 10#$MinuteNow == i )) # you can omit the dollar sign on bare variables in this context
在 Bourne shell (sh) 中:
if [ $MinuteNow -eq $i ]
在 zsh 或 ksh93 中:
if (( MinuteNow == i )) # you can omit the dollar sign on bare variables in this context
答案3
答案4
在bash
, 使用:
(($MinuteNow == $i))
例如:
如果(($MinuteNow == $i));那么
如果sh
需要兼容性,使用:
[ “$MinuteNow” -eq “$i” ]