任何人都可以解释这个简单的bash脚本出了什么问题



下面我有一个简单的bash脚本,我基本上想运行x秒,然后重新启动自身。我要有的问题,老实说,我正在定义脚本中的$秒,而从不重新定义或操纵价值。但是,如果您按照-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

SECONDS是一个特殊的变量。参见man bash

每次引用此参数,shell以来的秒数 返回调用。如果将值分配给秒,则值 随后的参考文献是自 分配加分配的值。如果秒尚不确定,即使它随后重置,它也会失去其特殊属性。

,如果您不想与特殊的情况发生冲突,请勿使用大写的变量名称。

最新更新