61 lines · 1.0 KB · Text
RawDownload
#!/bin/rcecho T.func: test user-defined functions >[1=2] $awk 'function f(x, y) {	x = "x"	y[0] = "y"	print x, y[0]}function g(z) {	print z[0]}BEGIN {	f(a, a)	g(a)}' >[2]foo1 >/dev/nullif(! grep 'can.t read value of .* an array' foo1 >/dev/null >[2=1])	echo 'BAD: T.func: simultaneously scalar and array: $ret' >[1=2] $awk 'function f(f1, f2, f3) {	f1[0] = "*"	print "f: " f1[0], f2[0], f3[0]}function g(g1, g2, g3) {	f(g1, g1, g1)	print "g: " g1[0], g2[0], g3[0]}function h(h1, h2, h3) {	g(h1, h2, h3)	print "h: " h1[0], h2[0], h3[0]}function i(i1, i2, i3) {	print "i: " i1[0], i2[0], i3[0]}BEGIN {	OFS = "-"	f(a, a, a)	g(b, b, b)	h(c, c, c)	i(a, b, c)}' >foo2cat <<'!' >foo1f: *-*-*f: *-*-*g: *-*-*f: *-*-*g: *-*-*h: *-*-*i: *-*-*!diff foo1 foo2 || echo 'BAD: T.func: cousin coherency' >[1=2] $awk 'function f(x) { x[0]="updated"; exit }function g(y) { print y[0] }BEGIN { f(a) }END   { g(a) }' >foo2echo 'updated' >foo1diff foo1 foo2 || echo 'BAD: T.func: exit skips arg conversion updates' >[1=2]