![将命令的输出读入变量](https://linux22.com/image/33863/%E5%B0%86%E5%91%BD%E4%BB%A4%E7%9A%84%E8%BE%93%E5%87%BA%E8%AF%BB%E5%85%A5%E5%8F%98%E9%87%8F.png)
我正在制作一个 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)