Aqui você vai:
v=$(unzip a.zip | grep -m1 'creating:' | cut -d' ' -f5-)
Explicação
-
$(...)
é um shell de captura. Ele captura a saída dos comandos dentro dele e os substitui como uma variável. - A saída do comando
unzip
é direcionada paragrep
, que recebe o argumento-m1
para retornar apenas o primeiro resultado e o textocreating:
, que faz parte do textounzip
imprime para stdout quando cria um diretório.grep
imprimecreating: foo/
para stdout, que é canalizadocut
. -
cut
é usado para imprimir todas as colunas (separadas por espaços) após a segunda. Nós especificamos de 5 até o final da linha, porque a palavracreating:
é prefixada com alguns espaços. Queremos usar todas as colunas até o final da linha, caso o nome do diretório tenha espaços. A saída final éfoo/
.