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

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

Re:_[shell-script]_conteudo_da_linha_em_execução


From: Felipe Kellermann
Subject: Re:_[shell-script]_conteudo_da_linha_em_execução
Date: Mon, 1 Dec 2003 01:05:51 -0200 (BRST)

On Sun, 30 Nov 2003 5:28pm  -0800, moysespr wrote:

> Detalhando mais a situação atual.
>

        Seria possível falar qual é o mistério da F(), também? :-)

> 1. Hoje realmente eu uso o sed (248kB) na função F para ter a linha do script
> cujo número passo como parâmetro. São muitas linhas de chamada ao longo do
> script.

        E o que a F() faz depois de pegar a linha?

> 2. A opção com a linha de comando em variável está como outra alternativa. 
> Deve
> ser rápida, mas exige alguns caracteres delimitadores adicionais, que gostaria
> de evitar.

        Não entendi bem. Quais caracteres delimitadores? Pode fazer o que
mostrei usando um eval com a substituição :=. Na F tu vai ter a linha da
chamada. Ou precisaria ser o número da linha por algum motivo? Poderia ser
por motivos de "debug" que estamos usando a LINENO. É isto?

        Eu também acho que isto deve ser feito "apenas na shell", mas eu
recomendaria não ir muito nestas histórias de "não carregar um programa
várias vezes". Se tu tá usando algum sistema moderno, ele deve saber muito
bem quando deve fazer alguma troca ou não. Antes se usava o sticky bit
para isto, não é? Pois, uma forma "só shell" que eu recomendaria é esta,

$ cat rl
#!/bin/sh
F() { for ((i=1; i <= $1; i++)) do read l; done < $0 && echo l: $l; }
F $LINENO # comentário
$ rl
l: F $LINENO # comentário

        Funcionaria bem também se fosse relativo às funções. Só ler a
partir dela até a chamada. Uma outra forma que pode ser legal é carregar
uma única vez todo o programa e depois apenas usar as linhas como o
índice. Um pouco diferente, tudo depende do misterioso objetivo da F();

        Até mais, :-)

-- 
Felipe Kellermann


reply via email to

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