-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

Thiago Caminha da Silva wrote:
>Pessoal,
>
>Volto com uma nova dúvida a respeito de interpretação de código
> diferenciada entre console e o script.
>
>Tenho um trecho de código que tem o objetivo de pegar o proprietário de
> um arquivo. O script funciona muito bem até se deparar com um arquivo
> ou diretório que tenha espaço no nome.
>
>Quando isso acontece ele funciona corretamente no console, mas quando
> rodo dentro do script ele reconhece a variavel "$ARQUIVO" como um array
> e acaba não retornando o que eu quero, porque ele não vai achar nenhum
> arquivo "teste\ " ou "teste.doc". Segue o código:
>
>    ARQUIVO="/home/diretorio1/teste teste.doc"
>
>    # Pega o proprietário do arquivo
>    VAR1="$(ls -l "$(echo $ARQUIVO)" | awk -F" " '{ print $3 }')"
>
>Alguém saberia me dizer onde está o erro e porque ele acontece?

Faltou "" em torno de $ARQUIVO depois do echo.

Deve ser:
        echo "$ARQUIVO"

Note o problema de " dentro de ". Scripts shell não são dão bem com 
arquivos com espaço no nome. Prefira escrever um script em Perl ou Python 
para lidar com eles.

Solução:

    ARQUIVO="/home/diretorio1/teste teste.doc"

    # Pega o proprietário do arquivo
    VAR1=$(stat -c %U "$ARQUIVO)

- -- 
  Thiago Macieira  -  thiago (AT) macieira.info - thiago (AT) kde.org
    PGP/GPG: 0x6EF45358; fingerprint:
    E067 918B B660 DBD1 105C  966C 33F5 F005 6EF4 5358
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.9 (GNU/Linux)

iD8DBQFIqcflM/XwBW70U1gRArlsAJ9NiX7f+h7x9sTVQqa6togeHfPpSACfQ/Or
2++SE/c4rBOIsAe0RYu1tSg=
=6XRl
-----END PGP SIGNATURE-----
---------------------------------------------------------------------------
Esta lista é patrocinada pela Conectiva S.A. Visite http://www.conectiva.com.br

Arquivo: http://bazar2.conectiva.com.br/mailman/listinfo/linux-br
Regras de utilização da lista: http://linux-br.conectiva.com.br
FAQ: http://www.zago.eti.br/menu.html

Responder a