Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/security/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
调用用户定义函数时出现awk语法错误_Awk - Fatal编程技术网

调用用户定义函数时出现awk语法错误

调用用户定义函数时出现awk语法错误,awk,Awk,我得到一个语法错误: /usr/xpg4/bin/awk: file "./test.awk": line 64: syntax error Context is: >>> printf (", %s", date_value ( $3, fmt_yyyymmdd ) ); <<< 我无法理解语法错误在哪里。 一个非常相似的语句(只有一个参数)不会产生语法错误,并且工作正常 printf (", %s", char_value ( $2) );

我得到一个语法错误:

/usr/xpg4/bin/awk: file "./test.awk": line 64: syntax error
Context is:
>>>   printf (", %s", date_value  ( $3, fmt_yyyymmdd ) );   <<<

我无法理解语法错误在哪里。 一个非常相似的语句(只有一个参数)不会产生语法错误,并且工作正常

printf (", %s", char_value  ( $2) );

对我来说,awk似乎不允许调用参数为用户定义变量或文字的用户定义函数,也不允许调用具有多个参数的用户定义函数。不幸的是,我并不精通awk。

我认为问题在于如何调用函数。在用户定义函数中,名称和参数之间不能存在任何空格,请使用:

printf (", %s", date_value($22, fmt_yyyymmdd ) );

如果您将这些片段放在一个单独的最小示例中再现问题,我们(可能还有您)将更容易发现错误。您的
printf
是否在操作中?是的,这就是问题所在,OP断言
char\u value($2)
没有此问题是错误的。顺便说一句,awk的语法应该是
printf“,%s”,date_value($22,fmt_yyyymmdd)
,因为awk不是C,所以不需要尾随分号,
printf
是一个内置函数,而不是一个函数,所以在参数中围绕它的参数只是误导。我已经相应地修改了代码,并将对其进行测试。
printf (", %s", char_value  ( $2) );
printf (", %s", date_value($22, fmt_yyyymmdd ) );