如何将变量日志作为参数传递给脚本?

如何将变量日志作为参数传递给脚本?

我试图将日志作为参数传递给执行以下操作的脚本:

#!/bin/bash
filter(){

grep -E "ERROR|FATAL|WARN|Caused|^[[:space:]]" /app/me/logs/$1

}

#read varName

filter > /app/me/logs/${1}.filtered

cat /app/me/logs/${1}.filtered

但它没有输出任何内容,并且它创建的日志文件中也没有任何内容。我传递给它的命令是这样的:

>>> log_filter test.log

log_filter 是脚本的名称, test.log 是我想要过滤的参数日志,正如你所看到的,我写了“read varName”,如果我将 varName 而不是 $1 传递到每个脚本中,这会起作用,但我不希望这样。

答案1

改变:

filter > /app/me/logs/${1}.filtered

到:

filter "$@" > "/app/me/logs/${1}.filtered"

为什么?每个函数都有自己的位置参数列表。您需要向正在调用的函数提供位置参数列表。

换句话说:函数内部
与主脚本中的不一样。$1filter$1

如果您只需要一个参数:

filter "$1" > "/app/me/logs/${1}.filtered"

应该就够了。

相关内容