#!/bin/sh rm -f report.txt i=1; while [ $i -le 99 ];do #99まで出力 fool=`expr $i % 3` #3で割ったときの余りを表示。 fool2=$i fool3=0; if [ $fool2 -ge 10 ];then while [ $fool2 -gt 10 ];do fool2=`expr $fool2 - 10` #10を超えたときに10マイナスして0からになるため、 #これは99までの1の位の数を表している。 fool3=`expr $fool3 + 1` #10を超えたときに1プラスされるため、 #これが99までの10の位の数を表している。 done fi ii=`expr $i % 8` #8で割ったときの余りを表示。 if [ $ii -eq 0 -a \( $fool -eq 0 -o $fool2 -eq 3 -o $fool3 -eq 3 \) ];then #(1)(...)の中は最初のfool=0というのはつまり、3の倍数で、 #fool2=3が1の位が3になり、fool3=3が10の位が3になる条件となる。 #この条件を言い返せば、3の倍数と3の付く数字である。 #後に使うので、この条件をAとしておく。 #andの条件として、8で割ったときの余りが0になる。つまり、8の倍数である。 #これも後に使うので、この条件をBとしておく。 #今の場合はAとBの両方の条件を満たすときである。 echo "$i fool comfortable" >> report.txt #この場合は数字の隣に fool comfortable と出力される。 elif [ $ii -eq 0 ];then #この場合はBの条件のみを満たす場合である。 echo "$i comfortable" >> report.txt #このときは数字の隣に comfortable と出力される。 elif [ $fool -eq 0 -o $fool2 -eq 3 -o $fool3 -eq 3 ];then #これはAの条件のみを満たす場合である。 echo "$i fool" >> report.txt #このときは、数字の隣に fool と出力される。 else #AもBも満たさない場合で echo "$i" >> report.txt #このときは数字の隣には、何も出力されない。 fi i=`expr $i + 1` done