用于在大量.jar文件中查找符号的Bash脚本

时间:2013-08-20 19:53:07

标签: bash jar

在我看来,这应该找到我想要的符号。相反,它没有找到符号。我哪里错了?我知道该符号存在于其中一个.jar文件中。

  1 ARRAY=(`find ${PWD} -name '*.jar'`);
  2 SYMBOL=$1;
  3 for i in ${ARRAY[@]};
  4 do
  5     JAR=`jar -tf $i`;
  6     GREPED=`echo ${JAR} | grep -s ${SYMBOL} | tr -d ' '`;
  7     if [ "${GREPED}" != "" ]; then
  8         echo $GREPED
  9     fi
  7 done

也许我误解了jar命令选项?

假设我下载了android SDK以获得乐趣,并在其上运行一个工具,说它无法找到给定的类com.android.email.mail.Flag。所以我用以下命令运行上面的脚本:

$ ./script.sh Flag

这应该排除jar命令的输出。如果我想上面的jar文件行8将是

echo $i

1 个答案:

答案 0 :(得分:4)

jar的使用似乎没问题,但是有太多的变量,数组,管道都可以避免。

以下内容对您有用:

for i in `find ${PWD} -name "*.jar"`; do
  jar -tf $i | grep -qs $1 && echo $i
done

这将列出包含符号的jar文件。