O problema é que o for reconhece campos pelo delimitador "IFS" (Internal Field Separator) e, " " (espaço) faz parte desse delimitador natural.
Voce pode alterar o delimitador IFS para um <ENTER> e resovler seu problema, tente: #! /bin/bash read -p "Nome a ser excluido: " NOME #cp nomes.dat nomes.tmp # comentada, nao tem necessidade IDNOME=`grep "$NOME" nomes.dat | cut -f2-` # alterado, nome do arquivo e "2-" echo "$IDNOME" # talvez aqui precise usar [EMAIL PROTECTED] - nao testei # Adicionada a linha IFS='<ENTER>' IFS=' ' for I in $IDNOME do read -p "Deseja excluir $I [s/N]? " resposta if [ $resposta = 's' -o $resposta = 'S' ] then sed -i "/$I/d" nomes.dat # alterado, o "-i" faz com que o sed execute diretamente no arquvio, nao precisa tmp fi done # rm nomes.tmp # desnecessario Nao testei, mas deve funcionar. Flavio do Carmo Junior PS: Eu gostoa mais do WHILE pra tratar o IFS, fica mais bunito, exemplo: while IFS=$'\n' read -r NOME; do read -p "Deseja excluir $NOME [s/N]: " resposta; if [[ $resposta == [sS] ]]; then sed -i '/$NOME/d' nomes.dat; fi; done < nomes.dat On 6/16/07, roneison.machado <[EMAIL PROTECTED]> wrote: > > Fala Galera do Shell, beleza? > Eu estou fazendo um trabalho de uma agenda telefonica em shell na > faculdade. > É o seguinte, eu possuo dois arquivos, um nomes.dat e um telefones.dat > O primeiro tem o seguinte formato: > > #idnome nome > 100 Suzana Alves > 101 Maria Alguma Coisa > . > . > 110 Suzana Vieira > > E o telefones.dat é do seguinte formato: > > #idtel idnome telefone > 1000 100 1111-1111 > 1001 101 2222-2222 > . > . > 1010 110 1010-1010 > > A minha duvida é que quando eu mando excluir, por exemplo, Suzana, ao > invés dele perguntar se quer excluir Suzana Alves e depois Suzana > Vieira, ele pergunta se eu quero remover Suzana, depois Alves, depois > Suzana de novo e depois Vieira. > Alguém poderia me dar uma ajuda com isso? Eu estou começando agora com > shell aí já sabem né. > > Desde já agradeço. > > Aí está o script: > > #! /bin/bash > > read -p "Nome a ser excluido: " NOME > cp nomes.dat nomes.tmp > > IDNOME=`grep "$NOME" nomes.tmp | cut -f2` > > echo "$IDNOME" > > for I in $IDNOME > do > read -p "Deseja excluir $I [s/N]? " resposta > if [ $resposta = 's' -o $resposta = 'S' ] > then > sed "/$I/d" nomes.tmp > nomes.dat > fi > done > rm nomes.tmp > > > [As partes desta mensagem que não continham texto foram removidas]
