2013-08-20 2 views
0

내 마음 속에는 내가 찾고있는 기호를 찾아야한다. 대신 상징을 찾지 않습니다. 내가 어디로 잘못 가고 있니? .jar 파일 중 하나에 기호가 있음을 압니다.상당량의 .jar 파일에서 기호를 찾기위한 Bash 스크립트

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을 찾을 수 없다는 도구를 실행합니다. 이것은 jar 명령의 출력을 printh한다

$ ./script.sh Flag 

: 그래서와 위의 스크립트를 실행합니다. 위의 jar 파일 줄 8이

echo $i이 될 수 있습니다.

+0

"기호"는 무엇을 의미합니까? 'jar -tf ...'는'.jar' 파일에 포함 된 * 파일 *을 나열합니다. 일부 경우 (클래스 이름 대부분) 기호와 관련이있을 수 있지만 같은 것은 아닙니다. 나는'.jar' 파일 (또는 그 문제에 대한'.class' 파일)에서 심볼 이름을 찾는 특별한 방법을 모른다. – twalberg

+0

예를 들어, 'Java 클래스에 대한 참조'에 대해 불평하는 정적 분석기를 사용할 수 없습니다. 그 중 하나가 'com.android.email.mail.Flag'입니다. 이 클래스 나 기호가 정의 된 위치를 알고 싶습니다. 어느 항아리인지, 그래서 나는 classpath에 추가 할 수있다. –

+0

예제 입력 및 필수 출력을 포함하도록 질문을 편집하십시오. 'JAR = ... '에 대한 여러분의 반복 작업 중 하나에서 무엇이 나오고 있습니까? ('JAR = $ (jar -tf $ i)'와 함께 현대적인 명령을 사용하십시오.) 그리고 마지막으로, 사람들이 이러한 잘못된 형식의 주석으로 질문을 명확히 읽지 못하게하십시오! 승인?! 행운을 빕니다. :-) – shellter

답변

4

jar 사용법은 괜찮은 것처럼 보이지만 피할 수있는 변수, 배열, 파이프가 너무 많습니다.

은 당신을 위해 다음과 같은 작업을해야합니다 :

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

이것은 기호가 포함 된 jar 파일 (들)을 나열합니다.

+0

+1을 더 간결하게하기 위해. –

관련 문제