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
							 |