jarファイルの内容を調べて、そのjarファイル内のいくつかのファイルをunixで検索したいとします。 私がしたのはjar -tvf "path_to_file/file_name.jar" | grep class_name_to_search
でした。この後、私は簡単に希望の結果を得ることができます。jar -tvfは個別に動作しています。 bashスクリプトに含まれていると動作しません
上記のコマンドを単純なbashスクリプトで使用すると問題が発生します。 以下は今、得るものです
#!/bin/bash nameToSearch=MyClassFileName str="" for i in $(find . -name "*.jar" | xargs [email protected] -d"\n" echo \"@\"); do # This is to append double quotes each line of the result of find command result=$(jar -tvf $i | grep $nameToSearch) echo "result: $result" done
がエラーを下回っている私の小さなスクリプトです
結果:
java.util.zip.ZipExceptionます。javaでのzipファイル を開くにエラー.util.zip.ZipFile.open(ネイティブメソッド) at java.util.zip.ZipFile(ZipFile.java:127) at java.util.zip.ZipFile(ZipFile.java:88) at sun .tools.jar.Main.list sun.tools.jar.Main.runで(Main.java:977) (Main.java:222)
それは私が追加されません場合にのみ、望ましい結果を提供します""でfindコマンドの結果。私の要求は二重引用符で結果を追加することです。
ご協力いただければ幸いです。 。例の場合 :事前に感謝
このような "evalの" 試してみてください。結果は= $(evalの "$ I -tvf jarファイルを| grepを$ nameToSearch" ) – Sanj
ありがとう、それは働いた! – Vishal