Вы можете использовать это так.
for i in `find $1 -name \*.jar`
do
jar tvf $i| awk -F '/' '/class/{print "'${i}'" " " $NF }' >> $classFile
done
Вы должны использовать
"'$ {i}'"
в AWK, чтобы использовать
$ i
, созданный в Bash Script.
Флаг -v
предназначен для установки переменных из командной строки. Попробуйте что-нибудь вроде этого:
awk -v "BASEN=$basen" '{print BASEN "\t" $3}'
Причина в том, что переменные bash (переменные среды) не раскрываются в строках, заключенных в одинарные кавычки. Попробуйте заменить
'{print $basen "\t" $3}'
на
"{print \"$basen\" \"\t\" \$3}"
Самый простой способ - создать переменную awk. awk -v awkvar = $ bashvar 'awkscript'
.
вы можете просто сделать все в awk
awk '{gsub(".txt","",ARGV[1]);print ARGV[1] "\t" $3}' inputfile.txt