olá o codigo continuava todo igual só tinha substituido a chamada de scripts aplicando o source e no script que é chamado o exit 0 por return 0.
Sim de facto neste caso não me interessa que ele verifique se deu erro ou não, o que me interessa é que o aptitude instale e caso não instale siga em frente como se não tivesse ocorrido nada, pois as aplicações entre si são independentes. o cd ../.. exit 0 é o final do script que citei acima, depois do case..., desculpe não ter colocado o script completo no primeiro tópico, mas isso é as ultimas duas linha que faltava lá. Vou tentar agora testar sem aquele parênteses ( é assim que se chama por cá :P ), porque tive na net á procura e todos s exemplos parecidos não o tinham. O que acho estranho é que se mudar a chamada de scripts e poser só echo, ele já funciona bem, mas tb já tentei em vez de chamar scripts, colocar logo o sudo aptitude..., só que ocorre o mesmo problema.. Obrigado pela ajuda, vou analisar a situação e testar, logo digo algo ;) Abraços --- Em [email protected], "mop" <[EMAIL PROTECTED]> escreveu > > Está certíssimo, quando ele sai do script adode.sh ele sai do case. O case > faz o que tiver na primeira entrada válida, nada mais. Se quiser diferente > terá de usar elif, ou outro esquema, mas eu não recomendo. > > Por aquele script citado, agora ele já pode estar diferente, estava tudo ok, > pois o case estava contido em um while ( nesse caso não precisa usar > parenteses, não sei sé é assim que se denomina por aí :) e será chamado > sucessivamente até que as linhas da variável "escolhas" acabem e o while > termine. Quem encerra o script é o while, não o case. A única explicação para > um encerramento prematuro é a instrução exit, explícitamente registrada ou > atomatizada com um "set -e" (exit ao primeiro erro). > > O set -x mostrou isso. Aonde está aquele "cd ../.." seguido do "exit 0"? > Foi ali que o script foi encerrado! Aliás vejo tudo cheio de zeros para > voltas. Isso não é legal. Só deve ser feito em casos muuuuuuito excepcionais. > Veja o return que eu deixei abaixo, se você não usar o subscript como source já > vai dar erro. Para que o return? Se alí é o fim do script. Ah mas e se o > retorno não for zero? O script chamador é que tem que decidir o que fazer ou > se é para ignorar. O seu, pelo código, que olhei melhor agora, está ignorando, > o que é muito correto para o que quer fazer. Apenas o usuário deve ficar > ciente de falhas, mas o resto da instalação deveria continuar, acho. > > Eu, em alguns casos costumo checar um parâmetro passado em linha de comando > para acionar um debug. Uma idéia bem simples, se na linha de comando tiver um > "-d" faço dentro do script d=1, caso contrário a variável d não exite. Daí nos > pontos que desejo ter um debug escrevo, por exemplo: > [ $d ]&&echo x=$x ou absolutamente o que quiser ou chamo funções, ou... > fica super fácil e não perturba quando não solicitada. Quero desligar aquele > ponto de debug e manter os outros, só coloco um "#" antes. > > Será que aquele cd ../.. falhou? Acho que não, pois há um exit 0 depois. :) > > É o que me ocorre de momento, espero que ajude. Qualquer coisa se manifeste. > Aaahhhhh, por que não coloca após cada subscript: > st=$?;[ $d ]&&echo scriptx status=$st > Pelo menos saberá se ele passou pelo ponto. :) > Para improvisar rápido, nem faça o esquema do -d, doloca direto: > echo scriptx status=$? > > Finalmente algo óbvio, se houver um exit em um subscript e ele for chamado > como source, ou com um "ponto espaço, antes do nome" se tiver um exit o script > chamador termina, pois é por ele que aquele código está sendo executado, e > não em um subshell. > > É isso, agora não me ocorre mais nada. > > > > ------------------------------------------------------------------ > >From: "miguelcm86" > > >Criando a base de dados de etiquetas... > >++ return 0 > >+ read escolha > >+ cd ../.. > >+ exit 0 > >Portanto eu seleccionei todas as opcções, mas ele ficou só pela > >primeira que é o adobe. > >no script do adode.sh só tem estas linhas: > >----------------------------------------- > >place=/home/miguel/install/Option/Base/ ##neste caso isto não é para nada > > > >sudo aptitude -y install acroread acroread-plugins mozilla-acroread > >acroread-escript > > > >return 0 > >-------------------------------------- > >usei o source e o return, mesmo assim ele quando saio, voltou ao > >inicio do ciclo e fez o "read escolha", não percebo porquê não > >continuo com a próxima palavra e finalizou o script. > >Vejam o código que está na primeira mensagem e digam-me o que acham. >
