#!/bin/sh #quiz1-2.sh 門1のスクリプト、その2 #ベースは「その1」と同じですが、少し、工夫して「while」、「printf」、「二重小括弧(( ))」などを使ってみました。 # echo > quiz1-2.txt #常に新しい、空のquiz1-2.txtというファイルを用意します。 m=1 ; LIMIT=100 while (( m <= LIMIT )) # while [ "$a" -le "$LIMIT" ]と同じ役割をします。 do a=`printf %03d $m` ; i=dat/"$a".dat #printfを使い、引数を3桁の整数に変換します。 n=$((m+1)) # n=`expr $m + 1` と同じ役割。 while (( n <= LIMIT )) do b=`printf %03d $n` ; j=dat/"$b".dat cmp $i $j > /dev/null # diffの代わりにcmpを使ったのは、 # cmpは、diffとほぼ同じ役割をするコマンドでありながら、もっとシンプルな比較をするため、 # 実行時間を少しでも短くできると考え、使って見ました。 # cmpとdiffは、比較する2つのファイルが同じであれば終了ステータス0をリターンし、違うときには0以外の数字(例えば、1)をリターンします。 if [ $? -eq 0 ] then echo ""$i"は"$j"と同じファイルです。" >> quiz1-2.txt fi let "n+=1" # whileループを回る度に、nを1ずつ増やしていきます。これも、exprを用いて表現できます。 done let "m+=1" # whileループを回る度に、mを1ずつ増やしていきます。 done