在我看来,这应该找到我想要的符号。相反,它没有找到符号。我哪里错了?我知道该符号存在于其中一个.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
。
答案 0 :(得分:4)
jar的使用似乎没问题,但是有太多的变量,数组,管道都可以避免。
以下内容对您有用:
for i in `find ${PWD} -name "*.jar"`; do
jar -tf $i | grep -qs $1 && echo $i
done
这将列出包含符号的jar文件。