首页 > 解决方案 > 在 awk 中访问别名参数

问题描述

我想定义一个 bash 别名来获取 systemctl 服务的状态。这是我到目前为止所做的:

status () { systemctl list-units -a | grep $1 | awk '{print $4}'; }

它打印出 systemctl 服务的状态。现在我还想打印 systemctl 服务的名称,即我传递给 status() 的参数。我不能只写

awk '{print $1 " " $4}'

因为$1将引用 awk 捕获的第一个参数。那么我怎样才能访问“原版”$1呢?

标签: bashawk

解决方案


将参数作为命令行参数传递:

... | awk -v service="$1" '{print service " " $4}'

@ctac_ 还建议您可以消除该grep命令:

awk -v 'service="$1" '$1==service{print $1,$4}'

推荐阅读