#!/bin/bash
mdate="$(date | awk '{print $2$3}')";
cd /var/tmp/precheck;
found="$(ls -l *.txt | awk '{print $6$7}')"
for txtdate in $found
do
if [ $mdate = $txtdate ]; then
echo "Pre-Check Success"
else
echo "Pre-Check FAILURE"
fi
done在上面的脚本中,使用当前日期验证了.txt文件。如果日期标记匹配,则返回“成功的其他失败”。
在这里,它为我工作,但它返回所有文件的条件。我只需要返回一个条件:成功还是失败。
如果其中任何一个文件与当前日期标记不匹配,则应返回一个失败条件。如果全部匹配,则只返回一个成功条件。
发布于 2017-09-14 16:44:37
让我们尝试一种完全不同的方法:
if find /var/tmp/precheck -name '*.txt' -mtime +0 | grep -q .; then
status="FAILURE"
fi
printf 'Pre-Check %s\n' "${status:-Success}"如果发现超过一天前修改的任何文件,则将状态设置为"FAILURE“。打印状态,默认为“成功”。grep -q .返回“成功”,并在收到任何输入后立即退出。
您现有方法中的问题已经在其他地方突出显示--如果您在循环中输出,那么您将以每文件一行结束。
发布于 2017-09-14 16:26:13
在循环之前设置一个变量,然后如果发现失败,请更改变量并退出循环。
status=Success
for txtdate in $found
do
if [ $mdate != $txtdate ]; then
status=FAILURE
break
fi
done
echo Pre-Check $status发布于 2017-09-14 16:30:16
您需要存储以前的文件结果。
#!/bin/bash
mdate="$(date | awk '{print $2$3}')";
cd /var/tmp/precheck;
found="$(ls -l *.txt | awk '{print $6$7}')"
result="SUCCESS"
for txtdate in $found
do
if [ $mdate != $txtdate ]; then
result="FAILURE"
fi
done
echo "Pre-Check " $resulthttps://stackoverflow.com/questions/46224049
复制相似问题