用于检查文件修改日期的脚本中存在语法错误

用于检查文件修改日期的脚本中存在语法错误

所以我想在 shell 中创建一个脚本,执行时可以修改文件或回显消息。

这是我设法写的:

#!/bin/bash

current=$(date +%s)
last_modified='stat -c "Y" $/home/userr/textfile'

if
[ $((current-last_modified)) -gt 120 ]; then
        touch /home/userr/textfile;
else
        echo "File was modified less than 2 minutes ago";
fi

ShellCheck 说一切正常,但是当我尝试执行它时,它说: stat -c "Y" $/home/userr/textfile: syntax error: invalid arithmetic operator (error token is ""Y" $/home/userr/textfile")

知道我哪里出错了吗?先感谢您!

答案1

您当前的问题可能是这一行:

last_modified='stat -c "Y" $/home/userr/textfile'

在那里将字符串分配stat -C "Y" ...给变量。您可能想要做的是分配命令的输出,stat -c %Y /home/userr/textfile您可以如下编写:

last_modified="$(stat -c %Y /home/userr/textfile)"

我建议#!/bin/sh -e对所有 shell 脚本使用(这里不需要 bash :) ),其中-e启用快速失败行为,这样错误就不会被检测不到。

相关内容