jar内のクラスファイルが指定のJVMバージョンか検査する

グループにjava 1.5だってのにいつも1.6を使う人がいるので適当に作ってみた。ほんと勘弁してほしい。
遅いです。

javaVersionChecker.sh

#!/bin/sh
BASE_DIR=`pwd`
WORK_DIR=$BASE_DIR/tmp_$$
TARGET_JAR=$1
TARGET_VERSION=$2
TMP_CLASS_LIST=$TARGET_JAR.tmp.$$
trap "cd $WORK_DIR;rm -f $TMP_CLASS_LIST ;cd $BASE_DIR ; rm -Rf $WORK_DIR;  exit 1" 1 2 3 15
mkdir $WORK_DIR
cp $TARGET_JAR $WORK_DIR/$TARGET_JAR
cd $WORK_DIR
cat $TARGET_JAR |jar -t |grep \.class$ > $TMP_CLASS_LIST
cat $TARGET_JAR | jar -x 
for f in `cat $TMP_CLASS_LIST`
do
	c=`echo $f | sed -e 's/.*\///g' |sed -e 's/\.class//g'`
	d=`echo $f | sed -e 's/[^\/]*$//g'` #|sed -e 's/\.class//g'`
	cd $d
	v=`javap -v $c | grep 'major version: ' |sed -e 's/\s*major version: //g'`
	if [ $v -gt $TARGET_VERSION ]; then
		echo "Bad Verison Number! $TARGET_JAR"
		break
	fi
	cd $WORK_DIR
done
if [ -f $TMP_CLASS_LIST ]; then
	rm -f $TMP_CLASS_LIST
fi
cd $BASE_DIR
if [ -d $WORK_DIR ] ; then
	 rm -Rf $WORK_DIR
fi

使い方

javaVersionChecker.sh xxx.jar 48