169 lines
		
	
	
	
		
			2 KiB
		
	
	
	
		
			Text
		
	
	
	
	
	
			
		
		
	
	
			169 lines
		
	
	
	
		
			2 KiB
		
	
	
	
		
			Text
		
	
	
	
	
	
| a returns 5
 | |
| b returns 4
 | |
| c returns 3
 | |
| d returns 2
 | |
| in e
 | |
| e returned 25
 | |
| x is 25
 | |
| ZZ
 | |
| abcde
 | |
| defghi
 | |
| ZZ
 | |
| 5
 | |
| 0
 | |
| AVAR
 | |
| AVAR
 | |
| foo
 | |
| foo
 | |
| AVAR
 | |
| 5
 | |
| 5
 | |
| f1
 | |
| f1 () 
 | |
| { 
 | |
|     ( return 5 );
 | |
|     status=$?;
 | |
|     echo $status;
 | |
|     return $status
 | |
| }
 | |
| before: try to assign to FUNCNAME
 | |
| outside: FUNCNAME =
 | |
| before: FUNCNAME = func
 | |
| FUNCNAME = func2
 | |
| after: FUNCNAME = func
 | |
| outside2: FUNCNAME =
 | |
| function
 | |
| zf is a function
 | |
| zf () 
 | |
| { 
 | |
|     echo this is zf
 | |
| }
 | |
| f is a function
 | |
| f () 
 | |
| { 
 | |
|     echo f-x;
 | |
|     echo f-y
 | |
| } 1>&2
 | |
| subshell
 | |
| f is a function
 | |
| f () 
 | |
| { 
 | |
|     echo f-x;
 | |
|     echo f-y
 | |
| } 1>&2
 | |
| f2 is a function
 | |
| f2 () 
 | |
| { 
 | |
|     echo f2-a;
 | |
|     function f3 () 
 | |
|     { 
 | |
|         echo f3-a;
 | |
|         echo f3-b
 | |
|     } 1>&2;
 | |
|     f3
 | |
| }
 | |
| subshell
 | |
| f2 is a function
 | |
| f2 () 
 | |
| { 
 | |
|     echo f2-a;
 | |
|     function f3 () 
 | |
|     { 
 | |
|         echo f3-a;
 | |
|         echo f3-b
 | |
|     } 1>&2;
 | |
|     f3
 | |
| }
 | |
| f4 is a function
 | |
| f4 () 
 | |
| { 
 | |
|     echo f4-a;
 | |
|     function f5 () 
 | |
|     { 
 | |
|         echo f5-a;
 | |
|         echo f5-b
 | |
|     } 1>&2;
 | |
|     f5
 | |
| } 2>&1
 | |
| subshell
 | |
| f4 is a function
 | |
| f4 () 
 | |
| { 
 | |
|     echo f4-a;
 | |
|     function f5 () 
 | |
|     { 
 | |
|         echo f5-a;
 | |
|         echo f5-b
 | |
|     } 1>&2;
 | |
|     f5
 | |
| } 2>&1
 | |
| testgrp is a function
 | |
| testgrp () 
 | |
| { 
 | |
|     echo testgrp-a;
 | |
|     { 
 | |
|         echo tg-x;
 | |
|         echo tg-y
 | |
|     } 1>&2;
 | |
|     echo testgrp-b
 | |
| }
 | |
| subshell
 | |
| testgrp is a function
 | |
| testgrp () 
 | |
| { 
 | |
|     echo testgrp-a;
 | |
|     { 
 | |
|         echo tg-x;
 | |
|         echo tg-y
 | |
|     } 1>&2;
 | |
|     echo testgrp-b
 | |
| }
 | |
| funca is a function
 | |
| funca () 
 | |
| { 
 | |
|     ( echo func-a )
 | |
| }
 | |
| funcb is a function
 | |
| funcb () 
 | |
| { 
 | |
|     ( echo func-b )
 | |
| }
 | |
| funcc is a function
 | |
| funcc () 
 | |
| { 
 | |
|     ( echo func-c ) 2>&1
 | |
| }
 | |
| func-a
 | |
| func-b
 | |
| func-c
 | |
| foo-bar
 | |
| foo-bar () 
 | |
| { 
 | |
|     :
 | |
| }
 | |
| expect 5 10
 | |
| 5 10
 | |
| expect 20
 | |
| 20
 | |
| expect 5 20
 | |
| 5 20
 | |
| expect 5 30
 | |
| 5 30
 | |
| expect 2 40
 | |
| 2 40
 | |
| expect 5 20
 | |
| 5 20
 | |
| ./func4.sub: line 10: foo: maximum function nesting level exceeded (100)
 | |
| 1
 | |
| after: f = 100
 | |
| ./func4.sub: line 10: foo: maximum function nesting level exceeded (100)
 | |
| 1
 | |
| after: f = 100
 | |
| 7
 | |
| after FUNCNEST reset: f = 201
 | |
| 7
 | |
| after FUNCNEST unset: f = 201
 | |
| ./func4.sub: line 10: foo: maximum function nesting level exceeded (20)
 | |
| 1
 | |
| after FUNCNEST assign: f = 38
 | |
| 5
 | 
