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

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

Re: variável no for com espaço [resolvido]


From: Deivid
Subject: Re: variável no for com espaço [resolvido]
Date: Tue, 09 Mar 2010 15:26:27 -0000
User-agent: eGroups-EW/0.82

Pessoal
Obrigado pela ajuda
Consegui resolver com o while mesmo, porém sem usar o IFS.
Vejam o resultado abaixo

#!/bin/sh

while read linha
do
  login="$(echo $linha | cut -d";" -f1)"
  grupo="$(echo $linha | cut -d";" -f2)"
  dslgn="$(echo $linha | cut -d";" -f3)"
  home="$(echo $linha | cut -d";" -f4)"
  shell="$(echo $linha | cut -d";" -f5)"
  echo "Criando conta $login"
  useradd -d $home -g $grupo -c "$dslgn" -s $shell -p teste $login
done < teste.csv



--- Em address@hidden, Fabiano Caixeta Duarte <fcd.listas@...> escreveu
>
> Em 7 de março de 2010 13:56, Deivid <deividvilela@...> escreveu:
> > Pessoal se puderem ajudar agradeço.
> >
> > A situação é a seguinte:
> > considerem o arquivo teste.txt
> >
> > root@server#cat teste.txt
> > Login;Descricao do Grupo;Descricao do Login;Home;Shell
> > deivid;Grupo do Suporte;Deivid Vilela;/home/deivid;/bin/bash
> > root@server#
> >
> > Preciso usar este arquivo para criar usuários em lote.
> > um "for" resolveria perfeitamente se não fosse por um detalhe simples, eu 
> > não consigo trazer o conteúdo das colunas 2 e 3 com os espaços.
> > O "for" quebra isso em dados diferentes.
> >
> > Vejam
> >
> > root@server#cat teste.sh
> > #!/bin/bash
> >
> > echo "------------------------------------------------"
> > echo "Saida do awk sem o for"
> > awk '{ split ($0, a, ";"); print a[2] }' teste.txt
> > echo "------------------------------------------------"
> > echo "Saida do awk quando armazenado na variavel \$conta"
> > for conta in $(awk '{ split ($0, a, ";"); print a[2] }' teste.txt)
> >        do
> >        echo $conta
> >        done
> > echo "------------------------------------------------"
> > root@server#
> >
> > Vejam a saída que esse script produz:
> > root@server#./teste.sh
> > ------------------------------------------------
> > Saida do awk sem o for
> > Descricao do Grupo
> > Grupo do Suporte
> > ------------------------------------------------
> > Saida do awk quando armazenado na variavel $conta
> > Descricao
> > do
> > Grupo
> > Grupo
> > do
> > Suporte
> > ------------------------------------------------
> > root@server#
> >
> > Se alguem conhecer uma forma de trazer o resultado com os espaços dentro do 
> > "for" serei muito grato ;-)
> >
> >
> >
> >
> >
> >
> > ------------------------------------
> >
> > ---------------------------------------------------------------------
> > Esta lista não admite a abordagem de outras liguagens de programação, como 
> > perl, C etc. Quem insistir em não seguir esta regra será moderado sem 
> > prévio aviso.
> > ---------------------------------------------------------------------
> > Sair da lista: address@hidden
> > ---------------------------------------------------------------------
> > Esta lista é moderada de acordo com o previsto em 
> > http://www.listas-discussao.cjb.net
> > ---------------------------------------------------------------------
> > Servidor Newsgroup da lista: news.gmane.org
> > Grupo: gmane.org.user-groups.programming.shell.brazil
> >
> > Links do Yahoo! Grupos
> >
> >
> >
> 
> Há n formas de fazer isto, mas as mais fáceis envolvem a utilização do
> IFS (Input Field Separator), que no seu caso é o caracter ;
> 
> Uma forma
> IFS=";"; while read a b c d e; do echo $b; done < arquivo
> Descricao do Grupo
> Grupo do Suporte
> 
> Outra forma
> IFS=";"; while read; do set - $REPLY; echo $2; done < arquivo
> Descricao do Grupo
> Grupo do Suporte
> 
> 
> -- 
> Fabiano Caixeta Duarte
> Especialista em Redes de Computadores
> Linux User #195299
> Ribeirão Preto - SP
>




reply via email to

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