awk 字段变量与函数参数冲突

pug*_*tor 1 bash awk

我的函数接收变量作为参数,例如:

function do()
{
  eval "TEST=$1"
}
Run Code Online (Sandbox Code Playgroud)

现在我想在同一个函数中解析一些数据:

function do()
{
   eval "TEST=$1"
   tail -n+3 file.txt | awk '$1  ~ "[0-9]$" {print "/dev/"$1}'
}
Run Code Online (Sandbox Code Playgroud)

问题是 awk 与传递给函数的参数冲突了它自己的字段分隔符“$1”。
有没有办法在不使用全局变量作为参数的情况下解决它?

che*_*ner 5

使用该-v选项声明一个awk保存函数参数值的变量。

function do()
{
   TEST=$1
   tail -n+3 file.txt | awk -v test="$TEST"  '$1 ~ /[0-9]$/ {print "/dev/"test}'
}
Run Code Online (Sandbox Code Playgroud)