首页 > 解决方案 > bash 重新读取它的 if 语句并将正确的信息打印到日志中

问题描述

所以我有以下问题。我想在文件 /bin/a 的元数据更改后创建脚本,该脚本会创建操作(在此示例中,日志中的适当条目就足够了)。我正在通过解析 stat 输出来检查元数据。之后,脚本使用 sed 获取元数据的新值,我希望我的脚本继续。

问题是,即使它在 stat 的“更改”参数中具有正确的新时间戳值(文件 /bin/a 的新值,例如,我已将 chmod 更改为 754),它仍然会产生错误日志(基本上采用“else”中的内容而不是“if”下的内容......我希望我让自己足够清楚:)这是脚本:

#!/bin/bash

# These lines do nothing more
# then logging STDOUT and STDERR to the log file:

exec 3>&1 4>&2
trap 'exec 2>&4 1>&3' 0 1 2 3
exec 1>/var/log/rest-nscd.log 2>&1

# Script itself:

while true
do
sleep 5
CHANGE=$(stat /bin/a |grep Change |awk '{print $3}')
if [ "$CHANGE" == "22:03:09.499223862" ]; then
    echo "OK ===  $(date)"
else  sed -i "s/22:03:09.499223862/$(stat /bin/a |grep Change |awk '{print $3}')/g" /bin/reset-test.sh && echo "NOT OK" '!!!!!!'
fi
done

标签: bashif-statementexec

解决方案


推荐阅读