38 lines
		
	
	
	
		
			680 B
		
	
	
	
		
			Text
		
	
	
	
	
	
		
		
			
		
	
	
			38 lines
		
	
	
	
		
			680 B
		
	
	
	
		
			Text
		
	
	
	
	
	
|   | # nameref requires changes to unset | ||
|  | bar=one | ||
|  | typeset -n foo=bar | ||
|  | 
 | ||
|  | # normal unset unsets only variable nameref references | ||
|  | # need unset -n to unset nameref itself | ||
|  | unset foo | ||
|  | echo "expect <unset>" | ||
|  | recho ${bar-unset} | ||
|  | echo "expect <unset>" | ||
|  | recho ${foo-unset} | ||
|  | echo "expect <bar>" | ||
|  | recho ${!foo} | ||
|  | unset -n foo | ||
|  | echo "expect <unset>" | ||
|  | recho "${!foo-unset}" | ||
|  | 
 | ||
|  | readonly bar=two | ||
|  | typeset -n foo=bar | ||
|  | 
 | ||
|  | unset foo	# this should fail because bar is readonly | ||
|  | 
 | ||
|  | echo "expect <two>" | ||
|  | echo ${bar-unset} | ||
|  | echo "expect <two>" | ||
|  | echo ${foo-unset} | ||
|  | 
 | ||
|  | # one question is what happens when you unset the underlying variable | ||
|  | qux=three | ||
|  | typeset -n ref | ||
|  | ref=qux | ||
|  | 
 | ||
|  | echo $ref | ||
|  | unset qux | ||
|  | echo ${ref-unset} | ||
|  | qux=four | ||
|  | echo ${ref-unset} |