unix - awk - 在用户定义的函数中打印参数名称

too*_*oop 0 unix linux bash shell awk

在bash脚本中使用下面的awk说:

如何让print_line函数打印传入的参数的名称?即这个输出

array passed in was:
arrayprime
array passed in was:
arraymagic
Run Code Online (Sandbox Code Playgroud)

只是代码要点的片段(不是整件事):

awk -F"$delim" '
NR>1 { 

        print_line(arrayprime)
        print_line(arraymagic)
}
    func print_line(arr)
    {
        print "array passed in was:"
            print arr
    }

} ' "$filename"
Run Code Online (Sandbox Code Playgroud)

Sie*_*geX 5

不,awk没有能力成为这种内省.

C语言可以通过使用C预处理器来实现.如果你真的想将这种类型的行为转换为你的awk函数,那么你可以考虑使用C预处理器或者编写一个GNU M4宏

如果您愿意再添加一个参数,那么您可以这样做.

awk -F"$delim" '
NR>1 { 

        print_line(arrayprime, "arrayprime")
        print_line(arraymagic, "arraymagic")
}
    func print_line(arr, name)
    {
        print "array passed in was:"
            print name
    }

}' "$filename"
Run Code Online (Sandbox Code Playgroud)