AWK学习笔记-2.3User-Defined Functions自定义函数

来源:互联网 发布:怎么升级淘宝版本 编辑:程序博客网 时间:2024/05/18 09:09

User-Defined Functions 自定义函数

1.自定义函数可以在任何地方进行定义.函数名和左括号(中间不能有空格

function name(parameter-list ){    statements}
  1. 两种返回方式:

    • 隐式返回:当awk执行到函数的结尾时,它自动地返回到调用程序
    • 显式返回:如果需要在结束之前退出函数,可以明确地使用返回语句提前退出。 return expression
  2. 函数可以直接使用awk中的变量,包括域变量($1、$2…)和函数外定义的其它变量,这些变量可以看做是全局变量,如果是直接使用,则函数中对变量的修改将影响该变量的值;

    echo "123456" | awk '{var = 10;MyFunc();print $1;print var;}function MyFunc(){print $1;var += 20;$1 = "abcdefg";}'

    123456
    abcdefg
    30

  3. 如果想要使得函数对变量的修改不改变原变量的值,那么需要通过参数传递的方式来实现;

    echo "123456" | awk '{ var = 10;MyFunc(var);print var;}function MyFunc(var){var += 20;}'

    10

  4. 函数中定义的变量默认也是全局的,如果想要使其作为局部变量,可以使用在参数中定义,但调用时不传入该参数的方式(shell函数中可以使用local关键字来定义局部变量);

    echo "123456" | awk '{MyFunc();print var1;print var2;}function MyFunc(var1){var1 = 0;var2 = 20;}'

    (空)
    20

  5. 函数的参数如果是标量则是传值,数组则是传引用,函数中改变数组的值可以改变全局数组中的值。

    echo "123456" | awk '{a = 10;b[1] = 15;MyFunc(a, b);print a;print b[1];}function MyFunc(x, y){x = 0;y[1] = 20;}'

    10
    20

    awk中的自定义函数

1 0
原创粉丝点击