在bash脚本中使用下面的awk说:
如何让print_line函数打印传入的参数的名称? 即此输出
array passed in was:
arrayprime
array passed in was:
arraymagic
只是代码要点的片段(不是整件事):
awk -F"$delim" '
NR>1 {
print_line(arrayprime)
print_line(arraymagic)
}
func print_line(arr)
{
print "array passed in was:"
print arr
}
} ' "$filename"
答案 0 :(得分:5)
不,awk
没有能力成为这种内省。
C
语言可以通过使用C预处理器来实现。如果你真的想将这种类型的行为转移到你的awk函数中,那么你可以考虑使用C预处理器或者写一个GNU M4 macro
如果您愿意再添加一个参数,则可以这样做。
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"