Fala Helton, não sei se entendi bem, mas vc disse: "ter um script com várias linhas, onde cada linha se referiria a um tipo de análise, que eu poderia comentar para realizar só as análises que me interessam".
Minha proposta é vc montar essas análises em um arquivo, o que melhora sua manutenção, pois não será necessário editar o script toda hora. Veja o arquivo que montei: $ cat analises analise1 analise2 analise3 analise4 analise5 Bem criativo, né? ;) Agora vamos escolher as análises que vc quer fazer: $ Anas=$(zenity --list --checklist --text "Marque somente as análises que deseja executar" --column Marque --column Analise $(cat analises | xargs -n1 echo false)) Escolhi as 3 opções impares e resultou: $ echo $Anas analise1|analise3|analise5 só que o zenity tem a opção --separator, e este separador pode ser o *texto* que vc quiser. Então veja a mágica: $ Anas=$(zenity --list --checklist --text "Marque somente as análises que deseja executar" --column Marque --column Analise $(cat analises | xargs -n1 echo false) --separator " ~/miotecscripts/") $ echo $Anas analise1 ~/miotecscripts/analise3 ~/miotecscripts/analise5 Hiii! Ficou quase bom, só falta unzinho antes de todos. Então vamos colocá-lo: $ Anas=\~/miotecscripts/$(zenity --list --checklist --text "Marque somente as análises que deseja executar" --column Marque --column Analise $(cat analises | xargs -n1 echo false) --separator " ~/miotecscripts/") $ echo $Anas ~/miotecscripts/analise1 ~/miotecscripts/analise3 ~/miotecscripts/analise5 Pronto! Está aí o que vc queria (ou pelo menos penso que é o que vc queria). Agora vamos voltar lá no seu find e tirar tudo a partir do -exec, guardando a saída na variável $Dirs. Ficaria assim: $ Dirs=$(find ~/pacientes/ -mindepth 2 -type d) Suponha que $Dirs tenha recebido dir1 e dir2 (continuo bem criativo, viu?) ;) Então agora é só fazer: $ echo $Anas | xargs -i eval {} $Dirs Se não entendeu ou se não for isso, podemos tentar outras coisas. O bacana desta solução é que ela ficou com 3 linhas (zenity, find e a linha de execução) e sem nenhum loop. Por isso é que desconfio qdo vejo um script com mais de 5 linhas... ;) OBS: Esta semana, a partir de 29/03, darei um curso de shell em SP (4Linux) no qual pode se inscrever na hora. Vou dar 20% de abatimento para quem for da lista. Mas atenção! Este abatimento valerá somente para este treinamento. Por favor quem for da lista e estiver no curso, se apresente. Conheço todos de nome e quase ninguém pessoalmente. Abraços, Julio Cursos de Shell e Zenity em 2 fins de semana? - SP turma de Shell em 29/03 - ligue (11)2125-4747; - Floripa turma Shell 12/04 http://www.seventreinamentos.com.br; - DF turma de Shell em 17/04 - ligue (61) 3223-3000; - Aracaju turma de Shell em 12/05 - andersonriz...@gmail.com; - RJ turma de Shell em 14/06 - ligue (21)2210-6061; - Turmas fechadas em outras cidades ligue (21) 8112-9988. Em 26 de março de 2010 00:06, heltonbiker <heltonbi...@gmail.com> escreveu: > > > Caros Colegas > > Estou aprendendo ShellScript e não consegui encontrar informações para > fazer o seguinte: > > Fiz (com ajuda) um script nomeado RunAnalyses.sh que contém o seguinte > comando, por enquanto único: > > find ~/pacientes/ -mindepth 2 -type d -exec ~/miotecscripts/MapaRelevo.m > '{}' 40 \; > > O objetivo é encontrar todas as pastas dois níveis abaixo (são elas que > contêm os dados a processar) e mandá-las para um script do GNU Octave, que > faz a análise de alguns arquivos de cada pasta e salva em uma única pasta de > saída, designada dentro do script MapaRelevo.m > > Acontece que estou criando outros módulos de análise, de forma que cada > arquivo do Octave (.m) faça um tipo de análise. Além disso, como são > análises para testar resultados de algoritmos, quase sempre vou querer rodar > apenas algumas análises específicas, embora pretenda usar sempre o mesmo > script. > > Imagino que eu poderia encadear vários -exec no mesmo find, mas o que > resolveria melhor meu problema seria (uma dessas): > > 1) ter um script com várias linhas, onde cada linha se referiria a um tipo > de análise, que eu poderia comentar para realizar só as análises que me > interessam; > 2) ter um script usando variáveis repassadas pela linha de comando, de > forma que eu pudesse rodar assim: > $ ./RunAnalyses.sh analise1 analise2 analise3 > e cada análise seria na verdade um script do Octave. > > Além disso, dentro de cada arquivo Octave é dado um 'cd ~/saida' antes de > salvar os resultados. Acredito que o melhor seria salvar na mesma pasta, e > depois dar um 'mv' de todos os arquivos para uma pasta de saída. Assim, se > eu quisesse mudar a pasta de saída seria só mudar uma linha no script > RunAnalyses.sh, ao invés de mudar em cada um dos scripts Octave. > > Não espero receber respostas prontas, apenas alguma indicação de "boas > práticas" na escolha dos comandos mais adequados e, principalmente, na forma > de montar a estrutura do script, de forma a favorecer a flexibilidade, > principalmente. > > Grato pela atenção > > Helton Moraes > > > [As partes desta mensagem que não continham texto foram removidas] ------------------------------------ --------------------------------------------------------------------- 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: shell-script-unsubscr...@yahoogrupos.com.br --------------------------------------------------------------------- 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: shell-script-unsubscr...@yahoogrupos.com.br <*> O uso que você faz do Yahoo! Grupos está sujeito aos: http://br.yahoo.com/info/utos.html