The UNIX and Linux Forums  


Go Back   De Unix-en Linux Forum > Top Forums > Programmeren en Shell Scripting
.
google unix.com



Programmeren en Shell Scripting Post vragen over KSH, CSH, SH, Bash, Perl, PHP, sed, awk en andere shell scripts en shell scripting talen hier.

Meer UNIX en Linux Forum Onderwerpen Misschien vindt u Helpful
Draad Thread Starter Forum Antwoorden Last Post
XLC compilatie fout bij de behandeling van operator overloading luop0812 AIX 1 04-09-2008 05:09 PM
perl: Bij het omgaan met bestanden die niet bestaan joeyg Programmeren en Shell Scripting 2 02-20-2008 05:09 PM
tsch script probleem (met sed) csnewbie84 Programmeren en Shell Scripting 10 05-02-2007 11:51 PM

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 Zoeken in deze Thread Rate Thread Display Modes
  #1 (permalink)  
Old 08-27-2007
jojan jojan is offline
Geregistreerde gebruiker
  
 

Join Date: juli 2007
Posts: 12
Helpen bij het omgaan met arra

Ik ben readinga bestand lin-regel en op basis van een craeting arry unieke elemenst uit de tweede kolom van de regel. Maar toen ik coem uit de while-lus mijn array leeg raakt, kan een eny me vertellen wat ik verkeerd zou doen
#! / bin / bash

logfile \u003d ". / mylog.dat"
begin \u003d 100
einde \u003d"$(( $ begin + 1000))! d "
index \u003d 0
Isthere \u003d 0
MOTOREN \u003d ""

sed "$ begin, $ eind" $ logfile | while read line
doen
i \u003d `echo $ line | awk-F", " '(print $ 2)'`
Isthere \u003d 0
voor het item in "$ (MOTOREN [@]}"; doen
if [ "$ i" \u003d "$ item"], vandaar
echo "reeds opgenomen daar"
Isthere \u003d 1
pauze
fi
gedaan
if [ "$ Isthere"-eq 0]; dan
echo "Adding $ Isthere"
MOTOREN [$ index] \u003d `expr $ i`
index \u003d $ (($ index + 1))
fi
# Echo $ line
gedaan
echo $ index $ (# MOTOREN [@]) ooit # howe op dit punt array is leeg
for i in "$ (MOTOREN [@]}"; doen
echo $ i
gedaan
  #2 (permalink)  
Old 08-28-2007
Perderabo's Avatar
Perderabo Perderabo is offline Forum Staff  
Unix Daemon
  
 

Join Date: Aug 2001
Locatie: Ashburn, Virginia
Berichten: 9.126
Zet een paar regels van de gegevens in een bestand met de naam test.file. Probeer deze lus stijl:
kat test.file | while read line
en de array leeg zal zijn na de lus eindigt. Probeer dan maar eens:
exec <test.file
terwijl gelezen lijn
en de array zal zijn gegevens na eindigt de lus. De while-lus wordt geplaatst in een subschil als het in een pijpleiding. ksh zal dat niet doen, maar andere schelpen doen.
  #3 (permalink)  
Old 08-28-2007
jojan jojan is offline
Geregistreerde gebruiker
  
 

Join Date: juli 2007
Posts: 12
Je bedoelt dat ik moet veranderen onder lijn
sed "$ begin, $ eind" $ logfile | while read line

aan
exec <test.file
terwijl gelezen lijn

Maar ik wil niet dat het bestand niet lezen volledig, maar pas vanaf begin tot eind.
  #4 (permalink)  
Old 08-28-2007
Perderabo's Avatar
Perderabo Perderabo is offline Forum Staff  
Unix Daemon
  
 

Join Date: Aug 2001
Locatie: Ashburn, Virginia
Berichten: 9.126
Wijzig uw techniek om zich te ontdoen van de pijpleiding, verander je shell te ksh, of leven met het lege array. Dit zijn uw opties. Sorry, maar je kunt niet houden van de pijpleiding, bash, en het scala inhoud. Men heeft om te gaan. Hier is een simpel script om het probleem te illustreren ...
Code:
$ 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 is het enige reservoir Ik weet dat beide arrays te bevolken. Dit is een van de redenen dat ik sterk de voorkeur ksh naar andere schelpen. (De andere is ksh co-processen.) Dus mijn suggestie: overschakelen naar ksh.
  #5 (permalink)  
Old 08-28-2007
jojan jojan is offline
Geregistreerde gebruiker
  
 

Join Date: juli 2007
Posts: 12
Fantastisch, dat was nieuw voor te zijn, dacht ik aan het kwijtraken van het de "disk te schrijven" gebeurt, terwijl uit om het in een bestand.

sed -n "$ begin, $ eind" $ logfile> motoren
exec <motoren
terwijl gelezen lijn
doen
# Array invoegen
gedaan

Dank je wel, ik ben er zo aan gewend niet van dien aard dat bash, ksh niet gemakkelijk is voor mij nu te gebruiken. Het heeft niet de "auto voltooiing wanneer typen we iets en de de <tab> toetsaanslag
  #6 (permalink)  
Old 08-28-2007
Perderabo's Avatar
Perderabo Perderabo is offline Forum Staff  
Unix Daemon
  
 

Join Date: Aug 2001
Locatie: Ashburn, Virginia
Berichten: 9.126
U kunt gebruik maken van bash als uw interactieve shell scripts schrijven en nog steeds in ksh.
Closed Thread

Bladwijzers

Thread Tools Zoeken in deze Thread
Zoeken in deze Thread:

Uitgebreid zoeken
Display Modes Beoordeel deze draad
Beoordeel deze draad:

Posting Regels
Jij mag niet Post Nieuwe threads
Jij mag niet na antwoorden
Jij mag niet post attachments
Jij mag niet bewerk uw berichten

BB code is Aan
Smilies zijn Aan
[IMG] code Aan
HTML-code is Uit
Trackbacks zijn Aan
Pingbacks zijn Aan
Refbacks zijn Aan




Alle tijden zijn GMT -4. Het is nu 12:35 AM.


Powered by: vBulletin, Copyright © 2000 - 2006, Jelsoft Enterprises Limited. Vertalingen Powered by .
vBCredits v1.4 Copyright © 2007 - 2008, PixelFX Studios
De Unix-en Linux Forums Copyright © 1993-2009. Alle rechten Reserved.Ad Beheer door RedTyger

Content Relevante URL's door vBSEO 3.2.0