Aqui fala o Cristiano2, Julio, só para testemunho, o cmd while + read foi quase uma tarde toda...
Em 3 de maio de 2010 22:12, Julio C. Neves <[email protected]> escreveu: > Fala Law, MrBiTs, Cristiano1 e Cristiano2, > Quero falar 2 coisas: > - Sobre o while: > Poxa Law, assim vc me derruba, disse que fez o curso comigo e não sabia nada > sobre o while na leitura... Quequeisso! Cara, fizemos um monte de exercício > *sempre usando* o while com read. Qdo ensino while, passo rapidamente por > ele e afirmo que seu maior uso é junto com o cmd read. Digo ainda > normalmente que, nas outras linguagens, o while é executado enquanto *uma > condição* for verdadeira. No shell, ele será executado enquanto *uma > instrução* for bem executada e o read (em se tratando de arquivos) só volta > um código falso ($? != 0) qdo encontra o EOF. > > Isso sempre é fartamente falado na aula, como tb está escrito naseção > "Afinal como se lê?" do livro que vc ganhou no curso. > > - Sobre as variáveis: > Para falar sobre isso vou dividir a msg do Cristiano em 2 partes: > "Já pensou em usar nome de variáveis em caixa alta? IHMO, nomes de variáveis > capitalizados são muito ruins de se escrever (perde-se muito tempo > combinando shift+tecla), além de ruins de se ler no meio do código e pode > causar muitos bug por erro de digitação." > > Concordo plenamente, já que capitalizado (termo que não gosto) vem de > Capital Letter que em inglês é letra maiúscula e são ruins de escrever pq > tem-se que fazer a combinação de shift+letra que pode... (aquilo tudo que > ele escreveu). Só que o início do seu parágrafo ele mesmo discorda disso > quando pergunta: "Já pensou em usar nome de variáveis em caixa alta?". Juro > que não entendi, pois para mim caixa alta e capitalizado são sinônimos (a > não ser que ele esteja querendo chamar de capitalizada a variável cuja > primeira letra seja maiúscula, que é como eu costumo usar). > > Depois o Cristiano fala outra coisa que eu tb não concordo: "Mas esta é > minha opinião. Quer um argumento técnico? Os nomes de variáveis no código > fonte do kernel são escritos, por padrão, em caixa baixa. Então, se você > resolver usar caixa baixa também, coisas muito ruins podem acontecer...". > As variáveis do kernel normalmente são em minúsculas e muitas são precedidas > por um ou dois sublinha, mas e daí o que o kernel tem a ver com o teu > ambiente shell?. Defendo o uso de variáveis em caixa baixa (exceto a > primeira letra de cada palavra) pq *todas* as variáveis de ambiente são em > caixa alta, e tem um monte delas (todas exportadas) que muitos não conhecem. > A quiza de exemplo, vou mostrar uma coisa que pode facilmente ocorrer: > > $ echo $USER # Isso é uma variável do sistema > julio > $ read -p "Nome do usuário: " USER > Nome do usuário: ddd > $ echo $USER > ddd > > Como vc viu a variável do sistema foi pro saco. > PELAMORDIDEUS, NÃO FAÇA ISSO!!! <- isso não é um grito, é uma variável de > ambiente. ;) > > Essa variável eu chamaria de $User ou $NomeDoUsuario, dependendo do saco do > dia. Gosto da 1a letra de cada palavra em maiúsculo, pq evita o sublinha e > distingue de instrução qdo se lê um programa. Me diga, como é mais fácil de > escrever e melhor de ler: $NomeDoUsuario ou $nome_do_usuario? > > Abraços, > Julio > Cursos de Shell e Zenity em 2 fins de semana? > - Aracaju turma de Shell em 12/05 - [email protected]; > - DF turma de Shell em 12/06 - ligue (61)3223-3000; > - RJ turma de Shell em 14/06 - ligue (21)2210-6061; > - Floripa turma de Shell e Zenity 12/07 – [email protected]; > - Turmas fechadas em outras cidades ligue (21)8112-9988. > > > Em 3 de maio de 2010 21:10, Lawrence Waclawiak > <[email protected]>escreveu: > >> Boa noite Cristiano. >> >> Pensar em usar eu havia pensado, porém a forma que conhecia para usar o >> while para ler um arquivo linha a linha era algo lusitano. >> Não sabia que o while tinha a facilidade de por si só ler o arquivo >> linha a linha, para isso eu criava um contador(COUNT) e com o comando >> "LINE=$(awk NR==$COUNT arquivo)" capturava cada linha para depois com o >> cut recuperar os campos. >> >> A solução do MrBits foi praticamente igual a sua mas o que realmente fez >> o ganho astronômico de desempenho foi a sacada dele de escrever tudo de >> uma só vês no arquivo de saída. >> >> O grep eu sabia dessa facilidade, mas acabei escrevendo usando o cat | >> por costume de quando eu ainda não sabia, vou cuidar para não faze-lo mais. >> >> Sobre as variáveis agora eu fiquei na dúvida pois eu sempre as usava em >> caixa alta, até que fiz o Curso de Shell com o Júlio e ele indicou que >> deveríamos usar capitalizadas pois as variáveis de ambiente são por >> default em caixa alta. >> >> Fiz alguns testes e constatei que não existe perigo de eu alterar uma >> variável de ambiente de dentro de um script apenas atribuindo valores a >> ela, ela só realmente muda o valor da variável de ambiente se eu usar o >> export $VAR, porém se eu tentar ler uma variável que ainda não tenha >> algum valor atribuído e que possua o mesmo nome da uma variável de >> ambiante, eu receberei o valor dessa variável de ambiente, também, >> depois de atribuir um valor a uma variável com o mesmo nome de uma >> variável de ambiente eu não posso mais recuperar o valor da variável de >> ambiente. >> Que confusão... >> Bom, concordo 100% que é muito melhor para visualizar no código as >> variáveis em caixa alta, então será que uma melhor opção não seria usar >> as variáveis em caixa alta mas com um _ no início? tipo $_USER $_NAME >> $_STATUS ? >> >> Acho que assim uniria o útil ao agradável. >> >> Muito obrigado pela sua atenção. >> >> Abraços, >> Lawrence Waclawiak >> >> >> Cristiano escreveu: >> > >> > --- Em [email protected] >> > <mailto:shell-script%40yahoogrupos.com.br<shell-script%2540yahoogrupos.com.br>>, >> Lawrence Waclawiak >> > <lawrence...@...> escreveu >> > > >> > > Tudo funciona corretamente porém a maquina demora um pouco para >> > > processar toda a lista e montar o dhcpd.conf, gostaria de saber se >> > > alguém conhece uma forma mais eficiente de recuperar o valor desses >> > > campos que não seja o que eu utilizei nem o awk -F';' '{print $x}' pois >> > > esse é mais pesado ainda. >> > >> > Já pensou em usar o while? >> > >> > http://pastebin.com/8Xdf5j9F <http://pastebin.com/8Xdf5j9F> >> > >> > 2 Dicas que você não pediu, se me permite: >> > >> > a) O grep tem capacidade de ler o conteúdo dos arquivos. Portanto, >> > você não precisa de um pipe para pesquisar regex dentro de arquivos >> > textos, como fez em na linha 43 do script (vide "cat $Database|egrep >> > -v '^#'"). Basta indicar o nome do arquivo após o padrão da regex, >> > como fiz na sugestão. >> > >> > b) Já pensou em usar nome de variáveis em caixa alta? IHMO, nomes de >> > variáveis capitalizados são muito ruins de se escrever (perde-se muito >> > tempo combinando shift+tecla), além de ruins de se ler no meio do >> > código e pode causar muitos bug por erro de digitação. Mas esta é >> > minha opinião. Quer um argumento técnico? Os nomes de variáveis no >> > código fonte do kernel são escritos, por padrão, em caixa baixa. >> > Então, se você resolver usar caixa baixa também, coisas muito ruins >> > podem acontecer.... ;-) >> > >> > >> >> >> >> >> ------------------------------------ >> >> --------------------------------------------------------------------- >> 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 >> >> >> > > > [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: [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 > > > ------------------------------------ --------------------------------------------------------------------- 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
