0

我有一个包含许多行的 eclipse .classpath 文件,例如

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

我的目的是编写一个 bash 脚本来解析每一行以测试该库是否存在。对于奖励积分,因为我知道我的机器上可能存在库的备用位置,如果在类路径文件指定的位置中找不到,我也会搜索备用位置并尽可能修复类路径文件。

我怎样才能做到这一点?

似乎如何通过 shell 脚本提取字符串的一部分?是相关的,但不确定如何将其转换为类似的格式

#!/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 回答