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

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中的自定义函数

你可能感兴趣的:(Linux,awk)