Bash

在 bash 腳本中使用帶有列號的 awk

  • February 20, 2022

我正在使用這樣的命令從以下位置獲取一些連接nf_conntrack

awk '($3 == "tcp") && ($6 != "TIME_WAIT") && ($10 == "dport=1234")' /proc/net/nf_conntrack

如何在 bash 腳本中使用此命令並向其添加腳本參數?如果我這樣做:

awk '($3 == "tcp") && ($6 != "TIME_WAIT") && ($10 == "dport=$1")' /proc/net/nf_conntrack

它將假設所有$1, $3, $6,… 都是腳本參數並且失敗。如何將awk列號與腳本參數分開以正確使用此命令?

沒有必要,但根據經驗,顯式聲明要從 env 傳遞到的變數awk

awk -v myvar="dport=$1" '($3 == "tcp") && ($6 != "TIME_WAIT") && ($10 == myvar)' /proc/net/nf_conntrack

引用自:https://serverfault.com/questions/1094235