File tree Expand file tree Collapse file tree 1 file changed +31
-13
lines changed Expand file tree Collapse file tree 1 file changed +31
-13
lines changed Original file line number Diff line number Diff line change 2
2
3
3
# class-version.sh - find the Java version which wrote a JAR file
4
4
5
- for jar in " $@ "
6
- do
7
- # find the first class of the JAR
8
- class=" $( jar tf " $jar " | grep ' \.class' | head -n 1 | sed ' s/\//./g' | sed ' s/\.class$//' ) "
9
-
10
- if [ -z " $class " ]
11
- then
12
- echo " $jar : No classes"
13
- continue
14
- fi
15
-
5
+ class_version () {
16
6
# extract bytes 4-7
17
- info=" $( unzip -p " $jar " " $( jar tf " $jar " | grep \. class$ | head -n 1 ) " | head - c 8 | hexdump -s 4 -e ' 4/1 "%d\n" "\n"' ) "
7
+ info=$( head -c 8 | hexdump -s 4 -e ' 4/1 "%d\n" "\n"' )
18
8
minor1=" $( echo " $info " | sed -n 1p) "
19
9
minor2=" $( echo " $info " | sed -n 2p) "
20
10
major1=" $( echo " $info " | sed -n 3p) "
55
45
esac
56
46
57
47
# report the results
58
- echo " $jar : $version ($major .$minor )"
48
+ echo " $version ($major .$minor )"
49
+ }
50
+
51
+ first_class () {
52
+ jar tf " $1 " | grep ' \.class' | head -n 1
53
+ }
54
+
55
+ for file in " $@ "
56
+ do
57
+ case " $file " in
58
+ * .class)
59
+ version=$( cat " $file " | class_version)
60
+ ;;
61
+ * .jar)
62
+ class=$( first_class " $file " )
63
+ if [ -z " $class " ]
64
+ then
65
+ echo " $file : No classes"
66
+ continue
67
+ fi
68
+ version=$( unzip -p " $file " " $class " | class_version)
69
+ ;;
70
+ * )
71
+ >&2 echo " Unsupported file: $file "
72
+ continue
73
+ esac
74
+
75
+ # report the results
76
+ echo " $file : $version "
59
77
done
You can’t perform that action at this time.
0 commit comments