76 lines
		
	
	
	
		
			1.2 KiB
		
	
	
	
		
			Text
		
	
	
	
	
	
		
		
			
		
	
	
			76 lines
		
	
	
	
		
			1.2 KiB
		
	
	
	
		
			Text
		
	
	
	
	
	
| 
								 | 
							
								# @(#)precedence_test 1.0 91/07/24 Maarten Litmaath
							 | 
						||
| 
								 | 
							
								# test of relative precedences for `&&' and `||' operators
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								echo "\`Say' echos its argument. Its return value is of no interest."
							 | 
						||
| 
								 | 
							
								case `echo -n` in
							 | 
						||
| 
								 | 
							
								  '') Say () { echo -n "$*" ; } ;;
							 | 
						||
| 
								 | 
							
								   *) Say () { echo "$*\c" ; } ;;
							 | 
						||
| 
								 | 
							
								esac
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								echo "\`Truth' echos its argument and returns a TRUE result."
							 | 
						||
| 
								 | 
							
								Truth () {
							 | 
						||
| 
								 | 
							
								  Say $1;
							 | 
						||
| 
								 | 
							
								  return 0;
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								echo "\`False' echos its argument and returns a FALSE result."
							 | 
						||
| 
								 | 
							
								False () {
							 | 
						||
| 
								 | 
							
								  Say $1;
							 | 
						||
| 
								 | 
							
								  return 1;
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								echo ""
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								cmd1='$open $test1 && $test2 $close || $test3'
							 | 
						||
| 
								 | 
							
								cmd2='$test1 || $open $test2 && $test3 $close'
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								grouping_sh=
							 | 
						||
| 
								 | 
							
								grouping_C='( )'
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								test3='Say 3'
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								for i in 1 2
							 | 
						||
| 
								 | 
							
								do
							 | 
						||
| 
								 | 
							
								   eval proto=\$cmd$i
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								   for test1 in 'Truth 1' 'False 1'
							 | 
						||
| 
								 | 
							
								   do
							 | 
						||
| 
								 | 
							
								      for test2 in 'Truth 2' 'False 2'
							 | 
						||
| 
								 | 
							
								      do
							 | 
						||
| 
								 | 
							
									 for precedence in sh C
							 | 
						||
| 
								 | 
							
									 do
							 | 
						||
| 
								 | 
							
									    eval set x \$grouping_$precedence
							 | 
						||
| 
								 | 
							
									    shift
							 | 
						||
| 
								 | 
							
									    open=${1-' '}
							 | 
						||
| 
								 | 
							
									    close=${2-' '}
							 | 
						||
| 
								 | 
							
									    eval cmd=\""$proto"\"
							 | 
						||
| 
								 | 
							
									    Say "$cmd   output="
							 | 
						||
| 
								 | 
							
									    output=`eval "$cmd"`
							 | 
						||
| 
								 | 
							
									    Say "$output"
							 | 
						||
| 
								 | 
							
									    read correct || { echo 'Input fubar.  Abort.' >&2; exit 1; }
							 | 
						||
| 
								 | 
							
									    test "X$output" = "X$correct" || echo "   correct=$correct"
							 | 
						||
| 
								 | 
							
									    echo ''
							 | 
						||
| 
								 | 
							
									 done
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									 echo ''
							 | 
						||
| 
								 | 
							
								      done
							 | 
						||
| 
								 | 
							
								   done
							 | 
						||
| 
								 | 
							
								done << EOF
							 | 
						||
| 
								 | 
							
								12
							 | 
						||
| 
								 | 
							
								12
							 | 
						||
| 
								 | 
							
								123
							 | 
						||
| 
								 | 
							
								123
							 | 
						||
| 
								 | 
							
								13
							 | 
						||
| 
								 | 
							
								13
							 | 
						||
| 
								 | 
							
								13
							 | 
						||
| 
								 | 
							
								13
							 | 
						||
| 
								 | 
							
								13
							 | 
						||
| 
								 | 
							
								1
							 | 
						||
| 
								 | 
							
								13
							 | 
						||
| 
								 | 
							
								1
							 | 
						||
| 
								 | 
							
								123
							 | 
						||
| 
								 | 
							
								123
							 | 
						||
| 
								 | 
							
								12
							 | 
						||
| 
								 | 
							
								12
							 | 
						||
| 
								 | 
							
								EOF
							 |