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. --------------------------------------------------------------------- Esta lista não admite a abordagem de outras liguagens de programação, como perl, C etc. Quem insistir em não seguir esta regra será moderado sem prévio aviso. --------------------------------------------------------------------- Sair da lista: [EMAIL PROTECTED] --------------------------------------------------------------------- Esta lista é moderada de acordo com o previsto em http://www.listas-discussao.cjb.net --------------------------------------------------------------------- Servidor Newsgroup da lista: news.gmane.org Grupo: gmane.org.user-groups.programming.shell.brazil Links do Yahoo! Grupos <*> Para visitar o site do seu grupo na web, acesse: http://br.groups.yahoo.com/group/shell-script/ <*> Para sair deste grupo, envie um e-mail para: [EMAIL PROTECTED] <*> O uso que você faz do Yahoo! Grupos está sujeito aos: http://br.yahoo.com/info/utos.html
