- 论坛徽章:
- 93
|
如果是printf估计没办法,它没有返回值。而且awk中,即使 printf %d 传入一个字符量也是正常打印 0,它不会失败。
对于别的函数,你可以通过返回值来判断。
比如自己包装一下 printf,只是做个例子:- awk '{ret = my_printf("%d\n", $0); print "result: "ret}
- function my_printf(fmt, val)
- {
- if(val ~ /[^0-9]/)
- return -1
-
- printf(fmt, val)
- return 0
- }' file
- ##########测试########3
- [seesea@UC ~]$ awk '{ret = my_printf("%d\n", $0); print "result: "ret}
- > function my_printf(fmt, val)
- > {
- > if(val ~ /[^0-9]/)
- > return -1
- >
- > printf(fmt, val)
- > return 0
- > }' file
- 1
- result: 0
- 2
- result: 0
- result: -1
- result: -1
- 3
- result: 0
复制代码 |
|