bash 脚本中的表达式错误

bash 脚本中的表达式错误

尽管相同的脚本在一个平台(Arch linux)上运行良好,但在我的其他移动平台(Maemo Linux)上运行良好,但我遇到了这个非常奇怪的错误。我将在此处传递代码的相关部分以及行编号:

41 for DIR in $DIRS
42 do
43 tempdir=$DIR/
44 tempval=$(stat -c %Y $tempdir)
45 echo $tempval
46 if (( $tempval > $(date +%s) - 3600*24*30 )); then
47     echo "I am done basically. Exiting..."
48     exit
49 else
50     continue
51 fi
52 done

在上面的代码中DIRS是一个包含目录名称的列表。在此循环中,我尝试查找列表中 30 天以上的目录,如果找到,我将退出脚本。

第 45 行放在那里基本上是为了调试目的。

我收到以下错误:

./script.sh : line 52 : 1372757584 : not found

根据评论建议进行一些更改后:

好的,现在的错误如下:

scone.sh: line 46: ((: 1372768246 -gt 1372770593 - 3600*24*30 : syntax error
in expression (error token is "1372770593 - 3600*24*30 ")

答案1

实际上,我已经按照评论中的三个人的建议进行了更改,所有这些更改都是脚本正常运行所必需的。

最终代码如下:

temptime=$(date +%s)
temptime=`expr $temptime - 2592000`

for DIR in $DIRS
do
tempdir=$DIR/
echo $tempdir
tempval=$(stat -c %Y $tempdir)
echo $tempval
if [[ $tempval -gt $temptime ]]; then
    echo "Exiting gracefully!!!"
    exit
else
    continue
fi
done

相关内容