http://www.zago.eti.br/script/scripts-nao-convencionais.txt Use CTRL+F para refinar a pesquisa. Linha de: **************** separa mensagens ou tópicos. ******************************************************** Zago http://www.zago.eti.br/menu.html FAQ e artigos sobre Linux ******************************************************** ******************************************************** De:  Dicas-L-Owner@unicamp.br Assunto:  [Dicas-L] Shell scripts não convencionais Data:  Fri, 18 Jul 2003 03:42:08 -0300 -------------------------------------------------------------------- Endereço: http://www.Dicas-l.com.br/dicas-l/20030718.shtml -------------------------------------------------------------------- PostgreSQL: Administração (DBA) e Linguagem PL/pgSQL Campinas : 30 de julho São Paulo: 16 de julho Mais informações http://www.dextra.com.br/servicos/treinamento/pg/postgres.htm ------------------------------------------------------------------------ Shell scripts não convencionais =============================== Na primeira linha de uma shell, geralmente encontramos algo do tipo: #!/bin/bash ou #!/bin/csh O que poucos sabem, é que podemos criar shells diretamente com outros comandos do Unix. Por exemplo, eu frequentemente preciso saber o meu endereço de trabalho, mas nunca me lembro onde coloquei o cartão com todos os dados. Este problema pode ser facilmente resolvido com uma shell como abaixo: #! /bin/more Rubens Queiroz de Almeida Cidade Universitária Zeferino Vaz Centro de Computação Unicamp 13.083-970 - Campinas - São Paulo Este é um script que ecoa para a tela o seu conteúdo. Ao executá-lo temos: #! /bin/more Rubens Queiroz de Almeida Cidade Universitária Zeferino Vaz Centro de Computação Unicamp 13.083-970 - Campinas - São Paulo Bom, apareceu também a primeira linha, que é uma informação que não preciso. Para resolver isto, basta fornecer ao comando more, o argumento +2, instruindo o comando a iniciar seu trabalho a partir da linha 2. O script fica então assim: #! /bin/more +2 Rubens Queiroz de Almeida Cidade Universitária Zeferino Vaz Centro de Computação Unicamp 13.083-970 - Campinas - São Paulo Desta forma a linha inicial não é mais exibida. Da mesma forma, se eu substituir a primeira linha por #! /bin/ls -l Teremos uma shell que executa o comando **ls -l* sobre ele mesmo, como abaixo: $ ./endereço -rwxr-xr-x 1 queiroz queiroz 137 Jul 12 18:40 ./endereço Parece meio inútil, mas certamente deve haver algum uso inteligente para esta facilidade .... --------------------------------------------------------------- As mensagens da lista Dicas-L são veiculadas diariamente para assinantes. Todas as mensagens da Dicas-L ficam armazenadas em http://www.Dicas-l.com.br. A redistribuição desta e outras mensagens da lista Dicas-L pode ser feita livremente, deste que o conteúdo, inclusive esta nota, não sejam modificados. --------------------------------------------------------------- ******************************************************** De:  Dicas-L-Owner@unicamp.br Assunto:  [Dicas-L] O Loop Select do Korn Shell Data:  Thu, 28 Aug 2003 02:58:56 -0300 -------------------------------------------------------------------- Endereço: http://www.Dicas-l.com.br/dicas-l/20030828.shtml -------------------------------------------------------------------- JScript - Guia de Consulta Rápida http://novateceditora.com.br/guias/jscript/ --------------------------------------------------------------------   O Loop Select do Korn Shell   =========================== Colaboração: Cláudio Lopes A instrucao Select no Korn Shell cria um menu. A forma de utilização do comando  é semelhante ao comando For. O legal é que o  Korn Shell automaticamente já enumera as opções fornecidas ao comando para que seja gerado o menu. Após mostrar a lista de escolhas do menu, o shell mostra um prompt e espera por uma entrada do usuário.  Este prompt é gerado baseado no valor da variável de ambiente PS3. O usuário deve digitar o valor da opção desejada, a qual é adicionada pelo comando. Caso o usuário não forneça uma opção válida, o prompt é novamente mostrado. Isto se deve ao armazenamento do input do usuário em uma variável de ambiente chamada REPLY. Você pode também utilizar o loop select em conjunto com o loop case, o que faz com que uma opção possa definir um conjunto de ações. Para finalizar o Loop, deve-se enviar um sinal à ele através da sequência CTRL+D. Outra forma, é a criação de uma opção "exit" a qual contém a instrução Break, que finaliza um loop. A seguir demonstrarei um exemplo completo da utilização deste loop.   #!/bin/ksh     PS3=Qual a sua escolha:     Select fruta in banana maca pera sair   do      case $fruta in         banana)                 echo Sua escolha foi a banana !                 ;;             maca)                 echo Sua escolha foi a maca !                 ;;             pera)                 echo Sua escolha foi a pera !                 ;;             sair)                 break                 ;;              *)                 echo Digite um valor entre 1-4.                 ;;      esac   done A execução deste script resultará em:   $./menu1.ksh   1)banana   2)maca   3)pera   4)sair   Qual a sua escolha: Qualquer dúvida ou sugestão, podem enviar e-mail para claudioplopes@uol.com.br. -------------------------------------------------------------------- Documentação do Projeto de Rede http://www.linuxdicas.com.br/modules.php?name=News&file=article&sid=585 ------------------------------------------------------------------------------- As mensagens da lista Dicas-L são veiculadas diariamente para 22421 assinantes.        Todas as mensagens da Dicas-L ficam armazenadas em                http://www.Dicas-l.com.br. A redistribuição desta e outras mensagens da lista Dicas-L pode ser feita livremente, deste que o conteúdo, inclusive esta nota, não sejam modificados. --------------------------------------------------------------- ******************************************************** De:  Anderson Lizardo Para:  linux-br@bazar2.conectiva.com.br Assunto:  Re: (linux-br)Shell script -- Aspas Data:  Tue, 27 Jan 2004 18:32:53 -0400 On Tuesday 27 January 2004 18:39, vandeci@shark.com.br wrote: > Parece besteira, mas eu estou apanhando disso. Isso é parte de um script que > joga esse texto com as variáveis interpretadas em outro arquivo. Só que > domínio.com.br e STELL não aparecem entre aspas. Isso é vital para o sucesso > do script. Alguém conhece algum recurso. > Grato > echo "subnet 10.$pre.$cli.4  netmask 255.255.255.252 { > use-host-decl-names on; >         option domain-name              "dominio.com.br"; >         option domain-name-servers        10.$pre.$cli.5; >         option host-name                "STELL"; > }" > /etc/cliente.conf Anteceda as aspas com uma barra invertida ("\"). Exemplo: echo "Isto é um \"teste\"." -- Anderson Lizardo lizardo@linuxfromscratch.org http://www.linuxfromscratch.org/ ******************************************************** De:  Marcio Merlone Para:  Miguel da Silva Cc:  linux-br@bazar2.conectiva.com.br Assunto:  Re: (linux-br)Interrompendo scripts em bash. Data:  Wed, 09 Jun 2004 14:40:13 -0300 Miguel da Silva wrote: Olá para todos, estou fazendo um script em bash e fiquei com a seguinte dúvida: como faço para interromper a execução do script? Alguém já passou por isso antes?! Vejam bem, a idéia não é parar um loop ou coisa do tipo, mas sim sair totalmente do script e voltar para o prompt. Dependendo do número de parâmetros que o usuário passar o script vai dar uma mensagem e então interromper sua execução. Encontrei o comando break que para um loop, mas não é o que eu preciso. >   > ------>8======== #!/bin/bash exit 23 echo "Voce nunca vai ler isto." ------>8======== Depois, no prompt, vc digita: echo $? e vai ter "23". O valor "zero" geralmente significa sem erros. Vc então tem como especificar um código de saída pra cada situação e assim testar onde o script parou e pq. -- Marcio Merlone "Quando as pessoas vão aprender que email é melhor em texto puro?!?!?" ******************************************************** ********************************************************