为什么这个变量没有传递给 awk?

为什么这个变量没有传递给 awk?

可能的重复:
awk 中的外部变量

下面如何传递这个变量?

这不起作用:

fname=testfile.txt
lsof | awk '/deleted/&&/$fname/ {print $4}'  *----no output*

虽然这有效:

lsof | awk '/deleted/&&/testfile.txt/ {print $4}'
3r

答案1

发生这种情况是因为 shell 变量没有用单引号展开。使用awkwith-v将模式传递到awk如下所示:

fname=testfile.txt
lsof | awk -v pattern="$fname" '/deleted/ && $0 ~ pattern { print $4 }'

相关内容