我有一个jar文件,我需要在Linux中执行它中的文件。 所以我需要逐行获取unzip -l命令的结果。 我设法用这个命令提取文件名:从unzip获取N行-l
unzip -l package.jar | awk '{print $NF}' | grep com/tests/[A-Za-Z] | cut -d "/" -f3 ;
但我无法弄清楚如何获得的文件名接二连三地执行它们。 我该怎么做?
非常感谢。
我有一个jar文件,我需要在Linux中执行它中的文件。 所以我需要逐行获取unzip -l命令的结果。 我设法用这个命令提取文件名:从unzip获取N行-l
unzip -l package.jar | awk '{print $NF}' | grep com/tests/[A-Za-Z] | cut -d "/" -f3 ;
但我无法弄清楚如何获得的文件名接二连三地执行它们。 我该怎么做?
非常感谢。
这里是我的尝试,这也考虑到Daddou的要求删除.class扩展名:
unzip -l package.jar | \
awk -F'/' '/com\/tests\/[A-Za-z]/ {sub(/\.class/, "", $NF); print $NF}' | \
while read baseName
do
echo " $baseName"
done
注:
它的工作原理,我也接受你的答案,谢谢你的提示。 – Daddou
如果你需要在一列中的第一行,添加一个管道,并得到使用head -1
第一行,以便您一个邮轮将是这样的:
unzip -l package.jar | awk '{print $NF}' | grep com/tests/[A-Za-Z] | cut -d "/" -f3 |head -1;
这会给你第一行
现在,球杆头和尾巴拿到第二线。
unzip -l package.jar | awk '{print $NF}' | grep com/tests/[A-Za-Z] | cut -d "/" -f3 |head -2 | tail -1;
得到第二行。
但是从编写脚本的观点来看,这不是一个好方法。你需要的是如下的循环:
for class in `unzip -l el-api.jar | awk '{print $NF}' | grep javax/el/[A-Za-Z] | cut -d "/" -f3`; do echo $class; done;
可以取代echo $class
与你所希望的任何命令 - 并使用$class
获得当前的类名。
HTH
我不明白瘸子靠近v OTE。从什么时候开始shell编程问题被认为是非题目问题? **壳牌编程是编程,**所以这个问题绝对属于这里。这不是无关紧要的。 * Bloodyélitists!* – tchrist
我通常在Java中编写代码,并且我可以告诉shell脚本至少具有挑战性。 – Daddou