shell-script-pt
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [shell-script] Ajuda para se fazer um script !!!!


From: Henrique Limaverde Cabral de Lima
Subject: Re: [shell-script] Ajuda para se fazer um script !!!!
Date: Thu, 1 Mar 2001 10:02:19 -0300 (EST)

On Wed, 28 Feb 2001, Jorge Yuri de Lion Yamane wrote:

> Vou dar mais detalhes. Eu gostaria que a shell perguntasse qual ? a p?gina
> inicial e a final que o usuario quer, ent?o pegasse esse numeros e fizesse os
> calculos que mencionei no e-mail anterior.

Olah Yuri,
   nao sei se voce jah resolveu seu problema, mas vou mandar uma solucao
que acho que vai ajudar: voce soh precisa passar o numero das paginas
inicial e final e o nome do arquivo como argumentos do script (acho que
fica melhor do que fazer o programa pedir iterativamente). A saida eh
jogada na tela para que voce possa redirecionar facilmente. Coloquei uns
testes pra nao permitir que qualquer numero de pagina seja fornecido e
alguns comentarios tambem

OBS: se o let nao funcionar, voce pode usar a sugestao do auth:
   tam='expr ($2 - $1 + 1) * $LIN_POR_PAG'
   fim='expr $2 * $LIN_POR_PAG'
Soh que esse esquema nao funcionou aqui no bash do linux :( Ei auth, qual
eh o shell que voce estah usando?

   Espero que resolva teu problema

            Henrique Lima
---------------------------------------------------------------------

#!/bin/bash
#
#   Esse arquivo retira as paginas ini e fin de um arquivo texto
# com numero de linhas fixo por pagina
# OBS: se o arquivo tiver menos que o numero de paginas pedido para
#      extrair, entao serah extraido ateh o fim do arquivo.

LIN_POR_PAG=64
if [ $# -ne 3 ]; then
   echo "Sintaxe: $0 pagina_inicial pagina_final nome_do_arquivo"
   exit 1
fi
if [ ! -r $3 ]; then
   echo "Nao consigo abrir o arquivo $3"
   exit 2
fi
if [ $1 -lt 1 ]; then
   echo "Numero da primeira pagina deve ser maior que 0"
   exit 3
fi
if [ $2 -lt $1 ]; then
   echo "Numero da pagina final deve ser maior ou igual 'a da primeira"
   exit 4
fi
let tam=($2-$1+1)*$LIN_POR_PAG # numero de linhas das paginas de interesse
let fim=$LIN_POR_PAG*$2 # numera da linha onde termina a ultima pagina de
interesse

head -$fim $3 | tail -$tam
# primeiro pegue do comeco ateh o fim da ultima folha
# depois pegue do fim ateh o tamanho das paginas que se quer (ou seja,
descate as paginas iniciais)



reply via email to

[Prev in Thread] Current Thread [Next in Thread]