0

次のような多くの行を含むEclipse .classpathファイルがあります

<classpathentry kind="lib" path="/somepath/somelibrary.jar"/>

私の意図は、各行を解析してライブラリが存在するかどうかをテストする bash スクリプトを作成することです。おまけとして、ライブラリが存在するマシン上の別の場所を知っているので、クラスパス ファイルで指定された場所に見つからない場合は、別の場所も検索し、可能であればクラスパス ファイルを修復します。

これどうやってするの?

シェルスクリプトを介して文字列の一部を抽出するにはどうすればよいですか? 関連していますが、次のような形式にする方法がわかりません

#!/bin/sh
while read f
do
   if [ -f $f ]
   then
      echo "Found: $f"
   else
      echo "Missing: $f"
   fi
done < $1

それが私の目標だと思います。

4

2 に答える 2

2
sed -n 's/.*path="\([^"]*\)".*/\1/p' file |
while IFS= read -r file
do
   if [ -f "$f" ]
   then
      echo "Found: $f"
   else
      echo "Missing: $f"
   fi
done

改行または二重引用符を含むファイル名では機能しません。あなたがそれらのいずれかを持っている場合は、私たちに知らせてください.

于 2012-12-07T12:25:15.683 に答える
0

egrep最初にクラスパス ファイルから jar パスを取得するために使用し、次にそれらの各パスを反復処理します。

for f in $(egrep -o '[/a-zA-Z0-9]+\.jar' .classpath); do
   if [ -f $f ]
   then
       echo "Found: $f"
   else
      echo "Missing: $f"
  fi
done
于 2013-06-26T17:32:24.403 に答える