The UNIX and Linux Forums  


Go Back   O UNIX e Linux Forum > Top Fóruns > Programação Shell Script e
.
google unix.com



Programação Shell Script e Post perguntas sobre ksh, CSH, SH, BASH, Perl, PHP, SED, Awk e outros scripts shell e shell scripts línguas aqui.

Mais UNIX e Linux Fórum Tópicos Você pode achar Helpfull
Fio Thread Starter Fórum Respostas Última postagem
xlc compilação de erro quando se tratar de operador de sobrecarga luop0812 AIX 1 04-09-2008 05:09
perl: Ao lidar com arquivos que não existem joeyg Programação Shell Script e 2 02-20-2008 05:09
tsch script problema (lidar com o sed) csnewbie84 Programação Shell Script e 10 05-02-2007 11:51

Closed Thread
English Japanese Spanish French German Portuguese Italian Dutch Swedish Russian Norwegian Hungarian Hebrew Danish Bulgarian Greek Powered by Powered by Google
 
Linkback Thread Tools Pesquisar este Thread Rate Thread Display Modes
  #1 (permalink)  
Old 08-27-2007
jojan jojan is offline
Usuário
  
 

Join Date: Jul 2007
Lugares: 12
Ajuda a lidar com Arra

Estou readinga arquivo lin por linha e com base craeting um único arry de elemenst a partir da segunda coluna da linha. No entanto, quando i coem fora do loop, enquanto o meu array fique vazio, Eny um pode dizer-me o que eu iria estar fazendo errado
#! / bin / bash

logfile \u003d ". / mylog.dat"
iniciar \u003d 100
final \u003d"$(( $ iniciar + 1000))! d "
índice \u003d 0
Isthere \u003d 0
MOTORES \u003d ""

sed "$ começar, $ fim" $ logfile | enquanto lê linha
fazer
i \u003d `echo $ linha | awk-F", " '(print $ 2)'`
Isthere \u003d 0
para o item em "$ (MOTORES [@]}"; fazer
if [ "$ i" \u003d "$ item"]; então
echo "Aleady lá"
Isthere \u003d 1
quebrar
fi
feito
if [ "$ Isthere"-eq 0]; então
echo "$ Isthere acrescentando"
MOTORES [$ index] \u003d `expr $ i`
Índice \u003d $ (($ index + 1))
fi
# Echo $ linha
feito
echo $ (# $ índice MOTORES [@]) # HOWE vez neste ponto array está vazio
for i in "$ (MOTORES [@]}"; fazer
echo $ i
feito
  #2 (permalink)  
Old 08-28-2007
Perderabo's Avatar
Perderabo Perderabo is offline Forum Staff  
Unix Daemon
  
 

Join Date: Aug 2001
Localização: Ashburn, Virginia
Mensagens: 9.128
Coloque algumas linhas de dados em um arquivo chamado test.file. Experimente esta alça estilo:
gato test.file | enquanto lê linha
e do array vai estar vazio após o ciclo termina. Então tente:
exec <test.file
enquanto lê linha
e da matriz terá dados após o ciclo termina. O ciclo while está sendo colocado em um subshell, se estiver em um gasoduto. ksh não vai fazer isso, mas outros reservatórios fazer.
  #3 (permalink)  
Old 08-28-2007
jojan jojan is offline
Usuário
  
 

Join Date: Jul 2007
Lugares: 12
Quer dizer, eu tenho que mudar a linha abaixo
sed "$ começar, $ fim" $ logfile | enquanto lê linha

para
exec <test.file
enquanto lê linha

Mas eu não quero ler o arquivo na íntegra, mas apenas a partir de começar a acabar.
  #4 (permalink)  
Old 08-28-2007
Perderabo's Avatar
Perderabo Perderabo is offline Forum Staff  
Unix Daemon
  
 

Join Date: Aug 2001
Localização: Ashburn, Virginia
Mensagens: 9.128
Altere a sua técnica para se livrar do gasoduto, mudar sua shell para ksh, ou viver com o vazio array. Estas são as suas opções. Desculpe, mas você não pode manter o gasoduto, bash, ea panóplia conteúdo. Um deles tem que ir. Aqui está um script simples para ilustrar o problema ...
Código:
$ cat script2
#! /usr/local/bin/bash

echo "cat
dog
mouse
rabbit
lion
wolf
dog
bat
lion
hamster
rabbit
elephant
elephant
whale
cricket" > list.txt

index=0
cat list.txt | while read item ; do
                array1[index]=$item
                ((index=index+1))
done
echo array1: ${array1[@]}

exec < list.txt
index=0
while read item ; do
        array2[index]=$item
        ((index=index+1))
done
echo array2: ${array2[@]}
exit 0
$ ./script2
array1:
array2: cat dog mouse rabbit lion wolf dog bat lion hamster rabbit elephant elephant whale cricket
$

ksh é o único reservatório Sei que irão povoar as duas matrizes. Esta é uma das razões que eu prefiro fortemente ksh para outros reservatórios. (O outro é co-ksh processos.) Assim, a minha sugestão: mudar para ksh.
  #5 (permalink)  
Old 08-28-2007
jojan jojan is offline
Usuário
  
 

Join Date: Jul 2007
Lugares: 12
Fantástico, que foi de novo a ser, pensei em acabar com o do "disco escrevem" acontecendo ao mesmo tempo a pô-lo em um arquivo.

sed -n "$ começar, $ fim" $ logfile> motores
exec <motores
enquanto lê linha
fazer
# Array inserir
feito

Muito obrigado, estou tão usada t tais que bash, ksh, não é fácil para mim para usar agora. Ela não tem o "auto realização, quando o tipo de coisa e os tempos <tab> chave
  #6 (permalink)  
Old 08-28-2007
Perderabo's Avatar
Perderabo Perderabo is offline Forum Staff  
Unix Daemon
  
 

Join Date: Aug 2001
Localização: Ashburn, Virginia
Mensagens: 9.128
Você pode usar bash como seu shell interativo e ainda escrever scripts em ksh.
Closed Thread

Marcadores

Thread Tools Pesquisar este Thread
Pesquisar este Thread:

Pesquisa Avançada
Display Modes Esta taxa Thread
Esta taxa Thread:

Destacamento Regimento
Você não pode postar novas threads
Você não pode postar respostas
Você não pode postar anexos
Você não pode editar suas postagens

BB code é Ligado
Smilies são Ligado
[IMG] código é Ligado
Código HTML é Desligado
Trackbacks são Ligado
Pingbacks são Ligado
Refbacks são Ligado




Todos os horários são GMT -4. A hora é agora 04:58.


Powered by: vBulletinCopyright © 2000 - 2006, Jelsoft Enterprises Limited. Língua Traduções Powered by .
vBCredits v1.4 Copyright © 2007 - 2008, PixelFX Studios
O UNIX e Linux Fóruns Content Copyright © 1993-2009. Todos os Direitos Reserved.Ad Gestão por RedTyger

Content Relevant URLs por vBSEO 3.2.0