shell脚本未运行但命令行正在运行

时间:2017-11-22 13:47:40

标签: bash shell date logfile logfile-analysis

我有一个错误日志文件,其内容为 -

uploadFromPc(files, parameters){
    let headers = new Headers();
    let formData = new FormData();
    Array.from(files).forEach(file => formData.append('photo', file));
    let options = new RequestOptions({ headers: headers });
    //options.params = parameters;
    return this.http.post(EnvVariables.apiEndpoint + 'wish/photo/upload', formData, options)
             .subscribe(response => console.log(response))
}

我有命令会提取日期和通知,警告消息

2017/11/06 13:17:05 [notice] 18164#18164: signal process started
.
.
.

它的工作正常,我得到了预期的输出 但是,我想将开始日期和结束日期作为命令行参数输入 为此,我把脚本写成 -

cat  whole_error.log | cut -d" " -f1,3,5-20 | sort -nr | grep "warn\|notice" | awk '$1 >= 2017/09/02 && $1 <= 2017/11/06' | awk '{print $1 " " $2" " $3}'

但它没有返回任何东西。没有任何错误消息。只是提示再次到达。 如何解决这个问题..

1 个答案:

答案 0 :(得分:1)

使用-v将shell变量传递给awk:

#!/bin/bash

file_name=$1
start_date=$2
end_date=$3

<"$file_name" cut -d" " -f1,3,5-20 \
  | sort -nr \
  | awk -v start_date="$start_date" -v end_date="$end_date" \
      '/warn|notice/ && $1 >= start_date && $1 <= end_date {print $1 " " $2" " $3}'