[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Direcionar saida de comandos para o read
From: |
Klaus Jurgen Friedrich |
Subject: |
Direcionar saida de comandos para o read |
Date: |
Tue, 23 Sep 2008 21:41:16 -0700 (PDT) |
Estou aprendendo shell script e encontrei com um problema de um exemplo do
livro Programação Shell Linux.
Fiz algumas simplificaçoes nos exemplos.
Vejam:
$ grep klaus /etc/passwd
klaus:x:1000:1000:klaus:/home/kurumin:/bin/bash
$ IFS=: # tranformei a variavel $IFS em dois pontos.
Ate aqui tudo bem, vejam agora:
# Joguei a saida do comando grep para o read armazenar nas variaveis:
# $a $b $c $d $e $f $g
$ grep klaus /etc/passwd | read a b c d e f g
# Nao criou a variavel $a
$ echo $a
# Nao criou nenhuma variavel, vejam.
$ echo -e "$a\n$b\n$c\n$d\n$e\n$f\n$g"
Fiz outro teste de um exemplo do livro, "O exemplo foi modificado por motivo de
simplificação.
cat arquivo
12345 1254 1235
12575 4788 1547
15488 9857 5289
# direcionar o arquivo do final do script para o comando while.
$ cat teste # Conteudo do arquivo "teste"
while read Linha
do
prim=$(echo "$Linha" | cut -f1 -d" ")
seg=$(echo "$Linha" | cut -f2 -d" ")
terc=$(echo "$Linha" | cut -f1 -d" ")
echo "$prim"
done < arquivo
# Executei o script e fiquei espantado
$ ./teste
12345 1254 1235
12575 4788 1547
15488 9857 5289
O grande problema eh que eu dei a instrucao ao script para mostrar somente
a primeira variavel "$prim" na tela e somente armazenar a segunda variavel $seg
e a terceira na variavel na variavel $tec
A primeira variavel $prim deveria ter somente o primeiro campo, a segunda
variavel somente o segundo campo e a terceira o teiceiro campo.
Por que aconteceu isso?
Novos endereços, o Yahoo! que você conhece. Crie um email novo com a sua
cara @ymail.com ou @rocketmail.com.
http://br.new.mail.yahoo.com/addresses
[As partes desta mensagem que não continham texto foram removidas]
- Direcionar saida de comandos para o read,
Klaus Jurgen Friedrich <=