局部变量

AWK 语言不直接支持局部变量函数。然而,通过向函数添加额外的参数可以很容易地模拟它们。通过 _ 为这些变量添加前缀以表示它们不是实际参数是传统的。

我们通过定义 single_quote 函数来说明这种技术,该函数在字符串周围添加单引号:

# single_quote(TEXT)
#  Return a string made of TEXT surrounded by single quotes

function single_quote(text, _quote) {
  _quote = sprintf("%c", 39)
  return sprintf("%s%s%s", _quote, text, _quote);
}

使用 sprintf("'%s'", text) 的简单方法会导致实际问题,因为 awk 脚本通常作为单引号参数传递给 awk 程序。