57 lines
		
	
	
	
		
			515 B
		
	
	
	
		
			Text
		
	
	
	
	
	
			
		
		
	
	
			57 lines
		
	
	
	
		
			515 B
		
	
	
	
		
			Text
		
	
	
	
	
	
| function f1
 | |
| {
 | |
| 	typeset -n v=$1
 | |
| 
 | |
| 	v=inside
 | |
| }
 | |
| 
 | |
| v=global
 | |
| f1 v
 | |
| echo $v
 | |
| 
 | |
| unset v
 | |
| unset -f f1
 | |
| 
 | |
| function foo
 | |
| {
 | |
| 	typeset x=one
 | |
| 
 | |
| 	typeset -n y=$1
 | |
| 	y=two
 | |
| 	echo inside: $x
 | |
| }
 | |
| 
 | |
| foo x
 | |
| echo outside: $x
 | |
| 
 | |
| function foo2
 | |
| {
 | |
| 	typeset -n x=$1
 | |
| 
 | |
| 	x=foo
 | |
| }
 | |
| 
 | |
| foo2 x
 | |
| echo $x
 | |
| 
 | |
| unset -f foo
 | |
| function foo { typeset -n v=$1; v=local; }
 | |
| 
 | |
| v=global
 | |
| foo v
 | |
| echo $v
 | |
| 
 | |
| unset v
 | |
| 
 | |
| # invalid self reference at global scope
 | |
| typeset -n v=v
 | |
| 
 | |
| # can we catch a circular self-reference?
 | |
| typeset -n v=w
 | |
| typeset -n w=x
 | |
| typeset -n x=v
 | |
| 
 | |
| x=4
 | |
| echo x = $x
 | |
| 
 | |
| unset -n v w x
 | 
