首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >shell脚本BASH

shell脚本BASH
EN

Stack Overflow用户
提问于 2017-09-14 16:20:38
回答 3查看 76关注 0票数 1
代码语言:javascript
复制
#!/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文件。如果日期标记匹配,则返回“成功的其他失败”。

在这里,它为我工作,但它返回所有文件的条件。我只需要返回一个条件:成功还是失败。

如果其中任何一个文件与当前日期标记不匹配,则应返回一个失败条件。如果全部匹配,则只返回一个成功条件。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2017-09-14 16:44:37

让我们尝试一种完全不同的方法:

代码语言:javascript
复制
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 .返回“成功”,并在收到任何输入后立即退出。

您现有方法中的问题已经在其他地方突出显示--如果您在循环中输出,那么您将以每文件一行结束。

票数 0
EN

Stack Overflow用户

发布于 2017-09-14 16:26:13

在循环之前设置一个变量,然后如果发现失败,请更改变量并退出循环。

代码语言:javascript
复制
status=Success
for txtdate in $found
do
    if [ $mdate != $txtdate ]; then
        status=FAILURE
        break
    fi
done
echo Pre-Check $status
票数 1
EN

Stack Overflow用户

发布于 2017-09-14 16:30:16

您需要存储以前的文件结果。

代码语言:javascript
复制
#!/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 " $result
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46224049

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档