script continua! [RESOLVIDO]

1. script continua! [RESOLVIDO]

felipe silva
lipman

(usa Debian)

Enviado em 16/12/2016 - 15:18h

alterei o script para usar case, mas agora me surgiu um erro...
quando seleciono uma opção que não existe, o programa continua ao invez de dar comando invalido!
segue o codigo: http://pastebin.com/H3AcL8GD


  


2. MELHOR RESPOSTA

Perfil removido
removido

(usa Nenhuma)

Enviado em 16/12/2016 - 16:15h

meu amigo seu script está uma bagunça sinistra... eu tomei a liberdade de reescreve-lo de uma forma que acredito ser mais legível/simples:

#!/bin/bash
### criado por perito ###
### email: programador-perito@openmailbox.org ###
### skype: programador-perito@openmailbox.org ###

sh_exit() {
case $1 in
1) echo "Comando Invalido!"; sleep 1;;
2) echo "Codec(Vídeo) Invalido!"; sleep 1;;
3) echo "Codec(Audio) Invalido!"; sleep 1;;
esac

clear
exit
}

sh_verification() {
# $1 variavel a ser verificada
# $2 fora de 1 a $2 se tornara um numero invalido
# $3 qual mensagem de saida o usuario recebera

case $1 in
0) sh_exit;;
[1-$2]);;
*) sh_exit $3;;
esac
}

sh_interface() {
case $1 in
1)
echo "||=================================================||"
echo "|| by: perito ||"
echo "||=================================================||"
echo "||=================================================||"
echo "|| 1) converter vídeo/áudio ||"
echo "|| 0) sair ||"
echo "||=================================================||";;
2)
echo "||=================================================||"
echo "|| escolha um codec de vídeo ||"
echo "||=================================================||"
echo "||=================================================||"
echo "|| 1) padrão (input) ||"
echo "|| 2) theora ||"
echo "|| 3) amv ||"
echo "|| 4) Avid ||"
echo "|| 5) bmp ||"
echo "|| 6) flash v1 ||"
echo "|| 7) flash v2 ||"
echo "|| 8) gif ||"
echo "|| 9) H. 261 ||"
echo "|| 10) H. 263 ||"
echo "|| 11) mpeg-1 ||"
echo "|| 12) mpeg-2 ||"
echo "|| 13) mpeg-4 parte 2 ||"
echo "|| 14) png ||"
echo "|| 15) Xvid ||"
echo "|| 0) sair ||"
echo "||=================================================||";;
3)
echo "||=================================================||"
echo "|| escolha um codec de áudio ||"
echo "||=================================================||"
echo "||=================================================||"
echo "|| 1) padrão (input) ||"
echo "|| 2) mp3 ||"
echo "|| 3) aac ||"
echo "|| 0) sair ||"
echo "||=================================================||"
esac
}

sh_conv() {
# $1 = arquivo input
# $2 = arquivo output
# $3 = codec de video
# $4 = codec de audio

case $3 in
1) video="";;
2) video="-vcodec theora";;
3) video="-vcodec amv";;
4) video="-vcodec avrn";;
5) video="-vcodec bmp";;
6) video="-vcodec flashsv";;
7) video="-vcodec flashsv2";;
8) video="-vcodec gif";;
9) video="-vcodec h261";;
10) video="-vcodec h263";;
11) video="-vcodec mpeg1video";;
12) video="-vcodec mpeg2video";;
13) video="-vcodec mpeg4";;
14) video="-vcodec png";;
15) video="-vcodec libxvid";;
esac

case $4 in
1) audio="";;
2) audio="-acodec mp3";;
3) audio="-acodec aac";;
esac

ffmpeg -i $1 $video $audio $2
}

while true; do
sh_interface 1
read resp;
sh_verification $resp 1 1

echo "Digite o nome do arquivo com extenção e indicando o caminho:"
read arq0;

echo "Digite o novo nome do arquivo com nova extenção e o caminho e ser gerado:"
read arq1;
clear;

sh_interface 2
read cmdv;
sh_verification $cmdv 15 2

sh_interface 3
read cmda;
sh_verification $cmda 3 3

sh_conv $arq0 $arq1 $cmdv $cmda
done


não cheguei a testar mas me parece que funcionara perfeitamente. (não precisa me adicionar nos créditos do código caso deseje usar esse)

3. Re: script continua! [RESOLVIDO]

thinomar
thinomar

(usa Linux Mint)

Enviado em 16/12/2016 - 17:41h

katsuke00 escreveu:

case $1 in
1) echo "Comando Invalido!"; sleep 1;;
2) echo "Codec(Vídeo) Invalido!"; sleep 1;;
3) echo "Codec(Audio) Invalido!"; sleep 1;;
esac


Só faltou tratar comandos inválidos no case, com *)




4. Re: script continua! [RESOLVIDO]

Perfil removido
removido

(usa Nenhuma)

Enviado em 16/12/2016 - 17:50h

thinomar escreveu:
Só faltou tratar comandos inválidos no case, com *)

Na verdade não, por que essa função e chamada somente de dentro do código, não faz sentido chamar ela de forma errada.



5. Re: script continua! [RESOLVIDO]

thinomar
thinomar

(usa Linux Mint)

Enviado em 16/12/2016 - 18:31h

katsuke00 escreveu:
Na verdade não, por que essa função e chamada somente de dentro do código, não faz sentido chamar ela de forma errada.

Sim, notei agora que essa é só no código mesmo, mas eu quis dizer todos os cases, só usei esse como exemplo pq era o menor.



6. Re: script continua! [RESOLVIDO]

Perfil removido
removido

(usa Nenhuma)

Enviado em 16/12/2016 - 18:34h

thinomar escreveu:
Sim, notei agora que essa é só no código mesmo, mas eu quis dizer todos os cases, só usei esse como exemplo pq era o menor.

Todos os cases não verificados são chamados somente de dentro ou verificados com a função "sh_verification".



7. Re: script continua! [RESOLVIDO]

felipe silva
lipman

(usa Debian)

Enviado em 18/12/2016 - 22:25h

katsuke00 escreveu:

meu amigo seu script está uma bagunça sinistra... eu tomei a liberdade de reescreve-lo de uma forma que acredito ser mais legível/simples:

#!/bin/bash
### criado por perito ###
### email: programador-perito@openmailbox.org ###
### skype: programador-perito@openmailbox.org ###

sh_exit() {
case $1 in
1) echo "Comando Invalido!"; sleep 1;;
2) echo "Codec(Vídeo) Invalido!"; sleep 1;;
3) echo "Codec(Audio) Invalido!"; sleep 1;;
esac

clear
exit
}

sh_verification() {
# $1 variavel a ser verificada
# $2 fora de 1 a $2 se tornara um numero invalido
# $3 qual mensagem de saida o usuario recebera

case $1 in
0) sh_exit;;
[1-$2]);;
*) sh_exit $3;;
esac
}

sh_interface() {
case $1 in
1)
echo "||=================================================||"
echo "|| by: perito ||"
echo "||=================================================||"
echo "||=================================================||"
echo "|| 1) converter vídeo/áudio ||"
echo "|| 0) sair ||"
echo "||=================================================||";;
2)
echo "||=================================================||"
echo "|| escolha um codec de vídeo ||"
echo "||=================================================||"
echo "||=================================================||"
echo "|| 1) padrão (input) ||"
echo "|| 2) theora ||"
echo "|| 3) amv ||"
echo "|| 4) Avid ||"
echo "|| 5) bmp ||"
echo "|| 6) flash v1 ||"
echo "|| 7) flash v2 ||"
echo "|| 8) gif ||"
echo "|| 9) H. 261 ||"
echo "|| 10) H. 263 ||"
echo "|| 11) mpeg-1 ||"
echo "|| 12) mpeg-2 ||"
echo "|| 13) mpeg-4 parte 2 ||"
echo "|| 14) png ||"
echo "|| 15) Xvid ||"
echo "|| 0) sair ||"
echo "||=================================================||";;
3)
echo "||=================================================||"
echo "|| escolha um codec de áudio ||"
echo "||=================================================||"
echo "||=================================================||"
echo "|| 1) padrão (input) ||"
echo "|| 2) mp3 ||"
echo "|| 3) aac ||"
echo "|| 0) sair ||"
echo "||=================================================||"
esac
}

sh_conv() {
# $1 = arquivo input
# $2 = arquivo output
# $3 = codec de video
# $4 = codec de audio

case $3 in
1) video="";;
2) video="-vcodec theora";;
3) video="-vcodec amv";;
4) video="-vcodec avrn";;
5) video="-vcodec bmp";;
6) video="-vcodec flashsv";;
7) video="-vcodec flashsv2";;
8) video="-vcodec gif";;
9) video="-vcodec h261";;
10) video="-vcodec h263";;
11) video="-vcodec mpeg1video";;
12) video="-vcodec mpeg2video";;
13) video="-vcodec mpeg4";;
14) video="-vcodec png";;
15) video="-vcodec libxvid";;
esac

case $4 in
1) audio="";;
2) audio="-acodec mp3";;
3) audio="-acodec aac";;
esac

ffmpeg -i $1 $video $audio $2
}

while true; do
sh_interface 1
read resp;
sh_verification $resp 1 1

echo "Digite o nome do arquivo com extenção e indicando o caminho:"
read arq0;

echo "Digite o novo nome do arquivo com nova extenção e o caminho e ser gerado:"
read arq1;
clear;

sh_interface 2
read cmdv;
sh_verification $cmdv 15 2

sh_interface 3
read cmda;
sh_verification $cmda 3 3

sh_conv $arq0 $arq1 $cmdv $cmda
done


não cheguei a testar mas me parece que funcionara perfeitamente. (não precisa me adicionar nos créditos do código caso deseje usar esse)



obrigado amigo... concerteza se eu usar eu vou por seus creditos!!!
abraços!







Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts