2015-08-31 83 views
1

我想編寫一個shell腳本,它可以幫助我找到包含Main的jar。 我一直在思考的:查找包含Main:Shell腳本的Jar

find . -name "*.jar" | jar -tvf | grep Main 

這似乎是不正確的,因爲罐子-tvf在同一時間發生在一個輸入和管道在一次創建完整輸出。是否有可能使管道連續工作?

回答

3

如果你正在使用bash,你可以使用進程替換使用這個腳本:

while IFS= read -d '' -r file; do 
    if jar -tf "$file" | grep -q 'Main'; then 
     echo "$file has Main" 
     break 
    fi 
done < <(find . -name "*.jar" -print0) 

對於非bash的使用:

find . -name "*.jar" -print0 | 
while IFS= read -d '' -r file; do 
    if jar -tf "$file" | grep -q 'Main'; then 
     echo "$file has Main" 
     break 
    fi 
done 
+0

它給java.util.zip.ZipExcpetion:錯誤在java.util.zip.ZipFile.open打開zip文件,.... – mousecoder

+0

啊我在'$ file'中缺少'$',試試吧 – anubhava