将命令的输出读入变量

将命令的输出读入变量

我正在制作一个 bash 脚本,但我是全新的并且迷路了。

我已经编写了这段代码

cat * | grep "|*parameter1*|" | grep "|*parameter2*|" | cut -f 8,11,12,15,21,23,34 -d "|" | wc -l

效果很好,但我需要将wc -l输出读入变量,以便我可以使用另一个 bash 命令求平均值。然后,打印出该平均值并使用户可读。

答案1

要回答您的直接问题,您需要将代码包装在一个$()序列中,以便可以将其输出分配给变量。就像这样:

x=$(your_code_goes_here)

也就是说,我对你的俏皮话有一些注意事项:

  • 为什么领先cat *?这似乎是一个对猫的无用利用。你可以直接做

    grep pattern *
    

    这仍然可能不是一个好主意,因为它将*匹配当前目录中的所有文件和子目录,并且如果您要求它在目录中搜索而不提供(递归)选项,grep则会抛出警告。根据您的使用情况,-r使用可能适合也可能不适合。*

  • 我不确定wc -l最后的目的是什么:cut不会在几行上打印其输出,因此wc -l(计算行数)将始终返回 1。

答案2

您可以使用以下语法:

var=$(cat * | grep "|*parameter1*|" | grep "|*parameter2*|" | cut -f 8,11,12,15,21,23,34 -d "|" | wc -l)

相关内容