在格式化的bash脚本中比较日期和日志

时间:2018-10-12 09:04:05

标签: linux bash shell unix awk

在此脚本中,我必须:

1)打印当前日期

2)打印上次修改的日志文件的日期

3)如果当前日期等于log1和log2 mod。日期,log1,log2的计数行

4)如果当前日期等于log1和log2 mod。日期,求和它们的行(wc log1 + wc log2)

5)如果log1和log2的总和大于100,

exit 2

6)如果当前日期和上次修改日期。 log1和log2的值不同,请将log1的行数设置为0,将log2的行数设置为0。

到目前为止,这是我的脚本。如果要对其进行测试,请将此.sh脚本保存在您的主目录中,然后在主目录中创建一个非空的log_1.log文件和一个非空的log_2.log文件。

第29行出现语法错误。

#!/bin/bash

#current date
printf "Current date:\n"

current_date=$(date +'%d  %B' | cut -c1-7) # 

echo $current_date #  

###########################################################

printf "Last modify date of log 1:\n"

date_log_1=$(ls -oF log_1.log | gawk '{print $6" ", $5'})

echo $date_log_1

printf "Last modify date of log 2:\n"

date_log_2=$(ls -oF log_2.log | gawk '{print $6 " ", $5'})

echo $date_log_2

if [[ $current_date == $date_log_1 ]]; then  
    count_line1=$(wc -l log_1.log)  
    printf "log 1 lines are \n $count_line1 \n"  

# sum count lines 
sum=$(("$count_line1 + $count_line2"))

fi #end

if [[ $current_date == $date_log_2 ]]; then  
    count_line2=$(wc -l ciao2.log)  
    printf "log 2 lines are \n $count_line2 \n"  

sum=$(($count_line1 + $count_line2))

fi

# is sum > 100?
if [[ sum > 100 ]]; 
then
    exit 2;
fi

###########################################################

if [[ $current_date != $date_log_1 ]]; then
    # set line count at 0       
    echo -n "" > log_1.log # set word count at 0
fi

if [[ $current_date != $date_log_2 ]]; then
    # set line count at 0       
    echo -n "" > log_2.log # set word count at 0
fi

1 个答案:

答案 0 :(得分:0)

您可能要修复此行

date_log_1=$(ls -oF log_1.log | gawk '{print $6" ", $5'})

date_log_1=$(ls -oF log_1.log | gawk '{print $6" ", $5}')

(下面还有一条类似的线。)