【发布时间】:2015-11-25 16:57:58
【问题描述】:
我想编写一个 shell 脚本,它可以帮助我找到包含 Main 的 jar。 我一直在想:
find . -name "*.jar" | jar -tvf | grep Main
这似乎是不正确的,因为 jar -tvf 一次接受一个输入,而管道一次创建完整的输出。有没有可能让管道连续工作?
【问题讨论】:
我想编写一个 shell 脚本,它可以帮助我找到包含 Main 的 jar。 我一直在想:
find . -name "*.jar" | jar -tvf | grep Main
这似乎是不正确的,因为 jar -tvf 一次接受一个输入,而管道一次创建完整的输出。有没有可能让管道连续工作?
【问题讨论】:
如果您使用的是 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
【讨论】:
$file 中丢失了$,现在试试