我有一个scritp,它收集有关文件子目录的信息。我正在检查文件创建之间的时间是否一致。
last=0
LOGCHECK="YES"
ls -l /dir/*.log | gawk '{print $8}' | sed s/:/*60+/g | bc |
while read fname
do
current=$fname
if [ $last = 0 ]; then
last=$current
elif [ $((current - last)) -ne 1 ]; then
echo "Time difference discrepancy: $((current - last)) minute(s) is not expected"
LOGCHECK="NO"
last=$current
else
last=$current
fi
done
仅当.log文件创建之间的时间不是一分钟时才会输出。我的问题是,while循环中的$ LOGCHECK在另一个子shell中,我相信管道?
有没有办法获取这个变量信息?
答案 0 :(得分:3)
这是bash
脚本的常见情况。像这样重构你的循环:
while read fname
do
# stuff
done < <(ls -l /dir/*.log | gawk '{print $8}' | sed s/:/*60+/g | bc)
然后循环中设置的变量仍然可用。