0

在我看来,这应该找到我正在寻找的符号。相反,它没有找到符号。我哪里错了?我知道该符号存在于 .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.

4

1 回答 1

5

jar 的使用似乎还可以,但是有太多的变量、数组、管道是可以避免的。

以下内容应该适合您:

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

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

于 2013-08-20T20:29:06.427 回答