[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
RES: [shell-script] #!/bin/sh ou #!/bin/bash ?
From: |
Julio Cezar Neves - DISB.O |
Subject: |
RES: [shell-script] #!/bin/sh ou #!/bin/bash ? |
Date: |
Mon, 27 May 2002 20:50:05 -0300 |
Olá Tchê! Muito frio ai no Sul?
Vc conseguiu aquele read pg os separadores default do read são o branco, o
<tab> e o <enter> isto é, o conteúdo da variável $IFS (o <enter> vc já
sabia, pq disse que antigamente fazia: for linha in `cat arquivo`). Para vc
verificar faça: (atenção pessoal do Linux! O comando hd não existe neste
sabor acho que usa-se od -h em seu lugar)
# echo "$IFS" | hd # Nao esqueca das aspas!
20 09 0a 0a
Que é a representação hexadecimal dos 3 separadores. O último 0a é devido ao
<enter> que dei ao final da linha.
Então, se o separador for, digamos, dois-pontos, faça:
IFS=:
while read USERNAME lixo USERID GROUPID COMENTARIO ETC
do
echo "
Usuario = $USERNAME
UID = $USERID
GID = $GROUPID
Comentarios = $COMENTARIO
Resto = $ETC"
done < /etc/passwd
[ ]s,
Julio Cezar Neves
-Eu Apoio o Software Livre-
> -----Mensagem original-----
> De: Rodolfo Villanova
> [mailto:address@hidden]
> Enviada em: segunda-feira, 27 de maio de 2002 19:42
> Para: address@hidden
> Assunto: RE: [shell-script] #!/bin/sh ou #!/bin/bash ?
>
>
> -----Original Message-----
> From: Julio Cezar Neves - DISB.O
> [mailto:address@hidden]
> Sent: Monday, May 27, 2002 6:44 PM
> To: address@hidden
> Subject: RES: [shell-script] #!/bin/sh ou #!/bin/bash ?
>
> >...Faltam muitas opções como p. ex. o read -n num, que lê
> num caracteres e termina o read
> sem
> >necessidade do <enter> ou read -t tempo, que após tempo
> segundos sai por time out....
>
> E aí mestre Júlio, beleza!
> Bah, pessoal! Por falar em "read":
> gostaria de compartilhar uma "manha" que descobri em minhas
> andaças pelo maravilhoso mundo
> do shell-script:
>
> A leitura de campos de arquivos de dados através do "read".
> Antes eu "capava" os separadores "brancos" e "tabs", trocando
> por ":" numa primeira
> leitura por awk e jogando prum outro arquivo, pra só então
> pegar os dados com uma nova
> leitura, do tipo:
> #-----
> for linha in `cat arquivo`
> do ...
> echo $linha | cut -d":" -f...
> done
> #-----
>
> Agora, vejam que beleza!...
>
> Ex.:
> #=======================
> ARQ_ENTRADA=~/...
> ARQ_OUT=~/ ...
> UPS=~/...
> while read -r PROCESSO PARAMETRO RESTO
> do
> if [ -z "$PARAM" ]; then
> PROC_AUX=`ps -ef | grep "$PROCESSO" | grep -v grep`
> else
> PROC_AUX=`ps -ef | grep "$PROCESSO $PARAMETRO"
> | grep -v grep`
> fi
> if [ -z "$PROC_AUX" ]; then
> echo "$PROCESSO $PARAMETRO" >> $ARQ_OUT
> else
> echo $PROC_AUX >> $UPS
> fi
> done < $ARQ_ENTRADA
> #=====================
>
> Abraço, mestre e amigo Julio Neves!
>
> Rodolfo
>
>
> ---------------------------------------------------------------------
> 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.listasdiscussao.cjb.net
---------------------------------------------------------------------
Seu uso do Yahoo! Grupos é sujeito às regras descritas em:
http://br.yahoo.com/info/utos.html