55 lines
		
	
	
	
		
			925 B
		
	
	
	
		
			Text
		
	
	
	
	
	
		
		
			
		
	
	
			55 lines
		
	
	
	
		
			925 B
		
	
	
	
		
			Text
		
	
	
	
	
	
|   | # builtins with exit status inverted | ||
|  | 
 | ||
|  | ( true ) | ||
|  | echo $? | ||
|  | ( ! true ) | ||
|  | echo $? | ||
|  | 
 | ||
|  | ( false ) | ||
|  | echo $? | ||
|  | ( ! false ) | ||
|  | echo $? | ||
|  | 
 | ||
|  | # inverting shouldn't affect exit | ||
|  | (exit 42) | ||
|  | echo $? | ||
|  | 
 | ||
|  | ( ! exit 42 ) | ||
|  | echo $? | ||
|  | 
 | ||
|  | # commands requiring an exec with exit status inverted -- broken in bash-2.04 | ||
|  | 
 | ||
|  | ( ls > /dev/null 2>&1 ) | ||
|  | echo $? | ||
|  | ( ! ls > /dev/null 2>&1 ) | ||
|  | echo $? | ||
|  | 
 | ||
|  | touch /tmp/notwrite | ||
|  | chmod 400 /tmp/notwrite | ||
|  | 
 | ||
|  | # make sure redirection failures in commands whose exit status is inverted | ||
|  | # are handled correctly | ||
|  | 
 | ||
|  | ( ls > /tmp/notwrite ) 2>/dev/null | ||
|  | echo $? | ||
|  | 
 | ||
|  | ( ! ls > /tmp/notwrite ) 2>/dev/null | ||
|  | echo $? | ||
|  | 
 | ||
|  | # now add exit traps, true and false for commands with and without exit | ||
|  | # status inversion | ||
|  | 
 | ||
|  | (trap 'false' 0 ; ! ls > /tmp/notwrite ) 2>/dev/null | ||
|  | echo $? | ||
|  | 
 | ||
|  | (trap 'false' 0 ; ls > /tmp/notwrite ) 2>/dev/null | ||
|  | echo $? | ||
|  | 
 | ||
|  | (trap 'true' 0 ; ! ls > /tmp/notwrite ) 2>/dev/null | ||
|  | echo $? | ||
|  | 
 | ||
|  | (trap 'true' 0 ; ls > /tmp/notwrite ) 2>/dev/null | ||
|  | echo $? | ||
|  | 
 | ||
|  | rm -f /tmp/notwrite |