我有一個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