The UNIX and Linux Forums  

Go Back   UNIX och Linux Forum > Upp Forum > Shell-programmering och Skript
.
google unix.com



Shell-programmering och Skript Post frågor om ksh, CSH, SH, bash, PERL, PHP, sed, awk och andra skalskript och skal skriptspråk här.

Mer UNIX och Linux Forum Ämnen Du kan hitta Helpful
Tråd Thread Starter Forum Svar Senaste Inlägg
xlc sammanställning fel vid hanteringen av Operatoröverlagring luop0812 AIX 1 04-09-2008 05:09
perl: När man arbetar med filer som inte finns joeyg Shell-programmering och Skript 2 02-20-2008 05:09
tsch script problem (att hantera sed) csnewbie84 Shell-programmering och Skript 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 Sök i denna tråd Rate Thread Visningslägen
  #1 (permalänk)  
Old 08-27-2007
jojan jojan is offline
Registered User
  
 

Join Date: Jul 2007
Inlägg: 12
Hjälp att hantera arra

Jag är fil readinga Lin rad och bygger craeting en ARRY unika elemenst från den andra kolumnen i raden. Men när jag coem ur medan slinga min samling blir tomt, kan eny en berätta för mig vad jag skulle göra fel
#! / bin / bash

logfile \u003d ". / mylog.dat"
börja \u003d 100
slutet \u003d"$(( $ börja + 1000))! d "
index \u003d 0
Isthere \u003d 0
MOTORER \u003d ""

sed "$ börjar, $ end" $ logfile | while read line
göra
I \u003d `echo $ line | awk-F", " '(print $ 2)'`
Isthere \u003d 0
för post i "$ (MOTORER [@]}"; do
if [ "$ i" \u003d "$ item"]; sedan
echo "Aleady där"
Isthere \u003d 1
bryta
fi
gjord
if [ "$ Isthere"-eq 0]; sedan
echo "lägga $ Isthere"
MOTORER [$ index] \u003d `expr $ i`
Index \u003d $ (($ index + 1))
fi
# Echo $ line
gjord
echo $ index $ (# motorer [@]) # Howe någonsin på denna punkt array är tom
för i "$ (MOTORER [@]}"; do
echo $ i
gjord
  #2 (permalänk)  
Old 08-28-2007
Perderabo's Avatar
Perderabo Perderabo is offline Forum Staff  
Unix Daemon
  
 

Join Date: Aug 2001
Ort: Ashburn, Virginia
Inlägg: 9.123
Sätt några rader data i en fil som heter test.file. Prova denna loop stil:
katt test.file | while read line
och matrisen kommer att vara tom efter loopen slutar. Försök sedan:
exec <test.file
samtidigt läsa linje
och matrisen kommer att ha data efter loopen slutar. Alltmedan slinga läggs i en subshell om det är i en rörledning. ksh kommer inte göra det, men andra skal göra.
  #3 (permalänk)  
Old 08-28-2007
jojan jojan is offline
Registered User
  
 

Join Date: Jul 2007
Inlägg: 12
Menar du att jag måste ändra nedanstående rad
sed "$ börjar, $ end" $ logfile | while read line

till
exec <test.file
samtidigt läsa linje

Men jag vill inte läsa filen helt, men bara från början till slut.
  #4 (permalänk)  
Old 08-28-2007
Perderabo's Avatar
Perderabo Perderabo is offline Forum Staff  
Unix Daemon
  
 

Join Date: Aug 2001
Ort: Ashburn, Virginia
Inlägg: 9.123
Ändra din teknik för att bli av med ledningen, byta skal till ksh, eller leva med den tomma matrisen. Dessa är dina alternativ. Ledsen, men du kan inte hålla ledningen, bash, och innehållet array. Man måste gå. Här är ett enkelt skript för att illustrera problemet ...
Kod:
$ 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 är den enda tanken jag vet att befolkar både kedjor. Detta är en av anledningarna till att jag starkt föredrar ksh till andra skal. (Den andra är ksh co-processer.) Så mitt förslag: Byt till ksh.
  #5 (permalänk)  
Old 08-28-2007
jojan jojan is offline
Registered User
  
 

Join Date: Jul 2007
Inlägg: 12
Fantastic, som var ny vara, tänkte jag på att bli av med det "disken skriva" inträffar medan ut den sätts in i en fil.

sed -n "$ börjar, $ end" $ logfile> motorer
exec <motorer
samtidigt läsa linje
göra
# Array Infoga
gjord

Tack så mycket, är jag van så t bash så det är ksh inte lätt för mig att använda nu. Det har inte "auto avslutad när vi skriver något och det <tab> nyckeln stroke
  #6 (permalänk)  
Old 08-28-2007
Perderabo's Avatar
Perderabo Perderabo is offline Forum Staff  
Unix Daemon
  
 

Join Date: Aug 2001
Ort: Ashburn, Virginia
Inlägg: 9.123
Du kan använda bash som din interaktiva skal och fortfarande skriva skript i ksh.
Closed Thread

Komihåglista

Thread Tools Sök i denna tråd
Sök i denna tråd:

Avancerad sökning
Visningslägen Betygsätt denna tråd
Betygsätt denna tråd:

Utstationering Regler
Du får inte efter nya trådar
Du får inte efter svar
Du får inte skicka bilagor
Du får inte redigera dina inlägg

BB-kod är
Smilies är
[IMG] kod
HTML-koden är Av
Trackback är
Pingbacks är
Refbacks är




Alla tider är GMT -4. Klockan är nu 04:14.


Powered by: vBulletin, Copyright © 2000 - 2006, Jelsoft Enterprises Limited. Översättningar Powered by .
vBCredits v1.4 Copyright © 2007 - 2008, PixelFX Studios
UNIX och Linux Forum Innehållet upphovsrättsskyddat © 1993-2009. All Rights Reserved.Ad förvaltning RedTyger

Content Relevant webbadresser från vBSEO 3.2.0