shell 脚本不是 运行 而是命令行 运行
shell script not running but command line running
我有一个错误日志文件,内容为 -
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 ' >= 2017/09/02 && <= 2017/11/06' | awk '{print " " " " }'
它完全工作正常,我得到了预期的输出
但是,我想将开始日期和结束日期作为命令行参数输入
为此,我将脚本写为 -
#!/bin/bash
file_name=
start_date=
end_date=
cat $file_name | cut -d" " -f1,3,5-20 | sort -nr | grep "warn\|notice" | awk ' >= $start_date && <= $end_date' | awk '{print " " " " }'
但是它没有返回任何东西。没有任何错误消息......只是提示再次到达。
如何解决这个问题..
使用-v
将shell变量传递给awk:
#!/bin/bash
file_name=
start_date=
end_date=
<"$file_name" cut -d" " -f1,3,5-20 \
| sort -nr \
| awk -v start_date="$start_date" -v end_date="$end_date" \
'/warn|notice/ && >= start_date && <= end_date {print " " " " }'
我有一个错误日志文件,内容为 -
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 ' >= 2017/09/02 && <= 2017/11/06' | awk '{print " " " " }'
它完全工作正常,我得到了预期的输出 但是,我想将开始日期和结束日期作为命令行参数输入 为此,我将脚本写为 -
#!/bin/bash
file_name=
start_date=
end_date=
cat $file_name | cut -d" " -f1,3,5-20 | sort -nr | grep "warn\|notice" | awk ' >= $start_date && <= $end_date' | awk '{print " " " " }'
但是它没有返回任何东西。没有任何错误消息......只是提示再次到达。 如何解决这个问题..
使用-v
将shell变量传递给awk:
#!/bin/bash
file_name=
start_date=
end_date=
<"$file_name" cut -d" " -f1,3,5-20 \
| sort -nr \
| awk -v start_date="$start_date" -v end_date="$end_date" \
'/warn|notice/ && >= start_date && <= end_date {print " " " " }'