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

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

Re: [shell-script] Re: script que substitui espaços


From: Gustavo Chaves
Subject: Re: [shell-script] Re: script que substitui espaços
Date: 03 Mar 2005 16:08:37 -0300
User-agent: Gnus/5.09 (Gnus v5.9.0) Emacs/21.3

>>>>> On Thu, 03 Mar 2005 17:57:32 -0000, "Leonardo Vieira" <address@hidden> 
>>>>> said:

  > Ah galera tem uma coisa se eu usar o script abaixo:

  > for i in *\ *.xml; do
  > n=`echo "$i" | tr ' ' _`
  > mv "$i" "$n"
  > done

  > Mesmo que não exista nenhum arquivo com espaço no nome ele entra no 
  > loop e tenta fazer o mv, gerando assim uma mensagem de erro.

  > Como fazer para que entre no loop, somente se existir algum arquivo 
  > com espaço no nome.

No caso da bash, há uma opção de shell que controla a expansão de
globs quando eles não casam com nenhum arquivo: nullglob.  Quando
desabilitado (o default), se o glob não casar com nada ele
simplesmente não é expandido, ficando na linha de comando.  Veja:

        $ mkdir x
        $ cd x
        $ touch a.txt
        $ shopt nullglob
        nullglob        off
        $ echo *.txt
        a.txt
        $ echo *.xtx
        *.xtx
        $

Note que ao tentar expandir o *.xtx, como não casou com nada, o echo
recebeu o glob original e o ecoou.  Se você habilitar a opção
nullglob, veja o que acontece:

        $ shopt -s nullglob
        $ shopt nullglob
        nullglob        on
        $ echo *.xtx
        
        $

Portanto, outra alternativa para resolver o problema seria executar um
'shopt -s nullglob' antes do loop.

Gustavo.


reply via email to

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