下面有一个简单的bash脚本,我基本上想运行X秒钟,然后重新启动。老实说,我遇到的问题是,我在脚本中定义$ SECONDS,而从未重新定义或操纵该值。但是,如果使用-x照原样运行脚本,则可以看到$ SECONDS与$ loopcounter一起递增。 WTH?!?
#!/bin/bash -x
SECONDS=30
loopcounter=0
LOGFILE="/var/log/somelogfile"
while [ /bin/true ]
do
eval "tail -f $LOGFILE | grep -i error &"
while [ $loopcounter -lt $SECONDS ]
do
loopcounter=$(($loopcounter + 1))
sleep 1
done
echo "Restarting.."
pkill -f "tail -f $LOGFILE"
done
答案 0 :(得分:6)
SECONDS
是一个特殊变量。参见man bash
:
每次引用此参数时,自shell以来的秒数 返回调用。如果将值分配给SECONDS,则该值 后续引用返回的是自 分配加上分配的值。如果未设置SECONDS,则即使随后将其重置,它也会失去其特殊属性。
如果您不想与特殊的变量冲突,请不要使用大写的变量名。