Transformar o resultado de um comando em uma variável

1. Transformar o resultado de um comando em uma variável

Saulo Barbosa Santiago dos Santos
angrasbss

(usa Ubuntu)

Enviado em 10/02/2018 - 18:34h

Preciso encontrar uma maneira de transformar o resultado de um comando em uma variável, veja o meu caso.
--
$ mkvmerge -i filme.mkv | grep "audio"
=> Abaixo é o resultado.
ID da faixa 0: audio (AAC)
ID da faixa 3: audio (AAC)
--
No caso, eu queria pegar os números que estão após "ID da faixa" e transformá-los em variáveis para usá-las em outro comando. De qualquer forma, acrescentei este comando para pegar somente números que preciso: mkvmerge -i filme.mkv |grep "audio" | cut -d ' ' -f4 | sed s/://
0
3
--
Eu gostaria de pôr estes valores neste comando abaixo no lugar das letras em maiúsculo. O número do "map" será equivalente à quantidade de número encontrados.

ffmpeg -i filme.mp4 -map 0:X -map 0:Y -map 0: ...

Agradecido por qualquer ajuda.


  


2. Re: Transformar o resultado de um comando em uma variável

Mauriciodez
Mauriciodez

(usa Debian)

Enviado em 10/02/2018 - 18:51h

angrasbss escreveu:

Preciso encontrar uma maneira de transformar o resultado de um comando em uma variável, veja o meu caso.
--
$ mkvmerge -i filme.mkv | grep "audio"
=> Abaixo é o resultado.
ID da faixa 0: audio (AAC)
ID da faixa 3: audio (AAC)
--
No caso, eu queria pegar os números que estão após "ID da faixa" e transformá-los em variáveis para usá-las em outro comando. De qualquer forma, acrescentei este comando para pegar somente números que preciso: mkvmerge -i filme.mkv |grep "audio" | cut -d ' ' -f4 | sed s/://
0
3
--
Eu gostaria de pôr estes valores neste comando abaixo no lugar das letras em maiúsculo. O número do "map" será equivalente à quantidade de número encontrados.

ffmpeg -i filme.mp4 -map 0:X -map 0:Y -map 0: ...

Agradecido por qualquer ajuda.


coloque o comando entre crase

variavel=`mkvmerge -i filme.mkv |grep "audio" | cut -d ' ' -f4 | sed s/://`
echo $variavel


------------------------------------------| Linux User #621728 |-----------------------------------------

" Nem sempre é amigo aquele que te tira do buraco !!! ( Saddam Hussein )"

------------------------------------------| Linux User #621728 |-----------------------------------------



3. Re: Transformar o resultado de um comando em uma variável

Slackjeff
slackjeff

(usa Slackware)

Enviado em 10/02/2018 - 23:22h

prefira $(comando) ao inves de crases `comando`

var=$(printf %s "oi tudo bem")

THE MAGIC SHELL PROGRAMMER.

Slackware user since ~2008
Meu canal no youtube:
https://goo.gl/ZcWSaB

Meu Site:
http://slackjeff.github.io/

Meus Programas estão aqui:
https://notabug.org/jeffersonrocha








4. Re: Transformar o resultado de um comando em uma variável

Saulo Barbosa Santiago dos Santos
angrasbss

(usa Ubuntu)

Enviado em 11/02/2018 - 11:58h

Este comando `mkvmerge -i filme.mkv |grep "audio" | cut -d ' ' -f4 | sed s/://` mostra a posição de todos os áudios, no caso, aparece 0 e 3 na mesma linha, eu queria que o 0 e o 3 fossem usados em parâmetros diferentes e separados, e jogados para dentro de um outro comando, assim:

ffmpeg -i filme.mkv -map 0:0 -map 0:3



5. Re: Transformar o resultado de um comando em uma variável

Mauriciodez
Mauriciodez

(usa Debian)

Enviado em 11/02/2018 - 12:20h

angrasbss escreveu:

Este comando `mkvmerge -i filme.mkv |grep "audio" | cut -d ' ' -f4 | sed s/://` mostra a posição de todos os áudios, no caso, aparece 0 e 3 na mesma linha, eu queria que o 0 e o 3 fossem usados em parâmetros diferentes e separados, e jogados para dentro de um outro comando, assim:

ffmpeg -i filme.mkv -map 0:0 -map 0:3


jovem .. eu não consigo rodar esse comando aqui ... logo eu não sei toda a saída desse comando ... então no mínimo explica isso aí nos mínimos detalhes ... vc diz que quer isolar um 0 ... porém existe 3 zeros nessa saída ... aí complica né ???

------------------------------------------| Linux User #621728 |-----------------------------------------

" Nem sempre é amigo aquele que te tira do buraco !!! ( Saddam Hussein )"

------------------------------------------| Linux User #621728 |-----------------------------------------



6. Re: Transformar o resultado de um comando em uma variável

Saulo Barbosa Santiago dos Santos
angrasbss

(usa Ubuntu)

Enviado em 11/02/2018 - 12:47h

É assim, quando você dá o comando mkvmerge -i <arquivo de vídeo>, ele dará as posições das faixas de áudio, vídeo e legendas. No meu caso, quando dou este comando no arquivo filme.mkv, ele dá a seguinte informação:

ID da faixa 0: audio (MP3)
ID da faixa 1: subtitles (SubRip/SRT)
ID da faixa 2: video (MPEG-4p10/AVC/h.264)
ID da faixa 3: audio (AAC)
ID da faixa 4: subtitles (SubRip/SRT)

O que me interessa é o número que vem após "ID da faixa", que é a localização da faixa que desejo. No caso, eu só quero os números das localizações das faixas de áudio, que é 0 e 3. Neste contexto, para pegar estes dados, realizo o seguinte comando:

angrasbss@HPavilion ~/Downloads/testes $ mkvmerge -i filme.mkv |grep "audio"
ID da faixa 0: audio (MP3)
ID da faixa 3: audio (AAC)

Como eu só quero os números das localizações, faço o seguinte comando:

angrasbss@HPavilion ~/Downloads/testes $ mkvmerge -i filme.mkv |grep "audio" | cut -d ' ' -f4 | sed s/://
0
3

Uma vez que consigo somente estes números, preciso que eles se tornem variáveis e sejam inseridos em outro comando desta forma:
ffmpeg -i <arquivo de vídeo> -map 0:<número da localização do áudio X> -map 0:<número da localização do áudio Y>

E assim sucessivamente enquanto houver faixas de áudios.

Em suma, preciso que leia todas as informações do arquivo apontado, reconheça quais as faixas de áudio e insira os números das faixas de áudio em parâmetros de outro comando.

Espero ter conseguido explicar melhor.
Obrigado pela atenção.






Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts