-1
我正在编写一个代码,以每10秒钟的睡眠时间打印点。而且,在每个睡眠会话结束时,睡眠间隔应增加5.如果剩余睡眠时间少于总睡眠时间的一半(即6),则脚本应显示经过的时间。Shell函数不在IF子句中执行
下面是代码,
#!/bin/bash
current_sleep_sess=0
total_sleep_sess=6
rem_sleep_sess=6
sleep_interval=10
SECONDS=0
elapsed_time()
{
sec=$1
((sec < 60)) && echo -e "[Elapsed Time : $sec sec]\c"
((sec >= 60 && sec > 3600)) && echo -e "[$((sec/60)) min $((sec % 60)) sec]\c"
((sec >= 3600)) && echo -e "[$((sec/3600)) hrs $(((sec % 3600)/60)) min $(((sec % 3600) % 60)) sec]\c"
}
until ((rem_sleep_sess == 0))
do
((current_sleep_sess=$current_sleep_sess+1))
sleep $sleep_interval
echo -e ".\c"
if ((rem_sleep_sess <= $((total_sleep_sess/2))))
then
elapsed_time $SECONDS
echo
fi
((sleep_interval=$sleep_interval+5))
((rem_sleep_sess=$total_sleep_sess-$current_sleep_sess))
done
的问题是,当我使用ELAPSED_TIME $秒内没有的if
条款,那么函数执行,但是当我在if
子句中使用它,那么函数获取跳过。有什么,我缺少一些语法规则?