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

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

Re: [shell-script] Erro no script somente em slackware 10.1


From: moysespr
Subject: Re: [shell-script] Erro no script somente em slackware 10.1
Date: Mon, 5 Sep 2005 20:46:09 -0700 (PDT)

Pelo que entendi seu problema está só no comando 2. Fiz aqui exatamente a
sua condição. Eis o resultado:
$ ls *.mid
1.mid  2.mid
$ for i in $(ls *.mid | sed s/.mid//); do echo $i; done;
1
2
$ sed --version
GNU sed version 4.0.9
Copyright (C) 2003 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE,
to the extent permitted by law.

As bibliotecas listadas:
$ ldd /bin/sed
        linux-gate.so.1 =>  (0xffffe000)
        libc.so.6 => /lib/tls/libc.so.6 (0xb7e76000)
        /lib/ld-linux.so.2 (0xb7f9e000)

Eu não entendo nada de sed, mas imagino que só possa ser ele, a menos que
use algum arquivo de configuração ou variável ambiental e que mude seu
comportamento. Duas coisas que eu tentaria:
1. trocar o ponto no nome dos arquivos (e no comando) por vígula. Se houver
diferença pode ser algo ligado a separador decimal (lingua)
2. Copie o sed de uma máquina para outra, usando um nome diferente, ou
colocando em local diferente, e refaça o teste em ambas. Se o comportamento
trocar de máquina você já sabe que a diferença é o executável sed.

Realmente eu não pensaria no bash, e muito menos no kernel, como o agente
diferencial.
Só uma questãozinha, pela lógica, não deveria ser assim:
sed s/.mid//g) , ao invés de assim:
sed s/.mid//)  ???

Não sei por que, o g aqui não fez diferença.

Boa sorte!


--- Mauricio <address@hidden> wrote:

> Olá pessoas...  há alguns dias me deparei com o seguinte problema:
> imaginem um diretório com três arquivos:
> 1.mid
> 2.mid
> 3.mid
> 
> para obter uma lista sem a extensão eu uso:
> 
> 1)
> for i in $(ls *.mid); do echo ${i%%.mid}; done;
> 
> ou
> 
> 2)
> for i in $(ls *.mid | sed s/.mid//); do echo $i; done;
> 
> ambos me retornam o seguinte em máquinas fedora, ubuntu, debian e
kurumin:
> 
> 1
> 2
> 3
> 
> 
> O caso é que em meu slackware 10.1 kernel 2.4.31 (no 2.3.29 era a mesma 
> coisa) e na minha máquina no trabalho também o segundo retorna a
lista 
> sem o corte:
> 1.mid
> 2.mid
> 3.mid
> 
> Atualizei o pacote sed, inclusive para as mesmas versões das outras 
> máquinas em que a linha funciona e nada. A pergunta é a seguinte:
> 
> Onde devo procurar a solućão? Atualizar o bash, o kernel, sei lá
o
> que...
> Espero que alguém possa me ajudar...
> Abraćo,
> Ricio
> 



        
                
______________________________________________________
Click here to donate to the Hurricane Katrina relief effort.
http://store.yahoo.com/redcross-donate3/


reply via email to

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