The UNIX and Linux Forums  
Hallo en welkom van de Verenigde Staten aan de UNIX en Linux Forum! Bedankt voor uw bezoek en Deelnemen aan onze wereldwijde gemeenschap.

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
Splitsing bestand gebaseerd op het aantal rijen wahi80 Programmeren en Shell Scripting 2 06-03-2008 10:38 PM
Kopieer lijnen via een log-bestand op basis van tijdstempel ranjiadmin UNIX for Advanced & Expert Gebruikers 1 05-22-2008 04:16
het zoeken en opslaan onbekend aantal lijnen gebaseerd op de string met een voorwaarde swamymns Programmeren en Shell Scripting 7 05-13-2008 02:02
Grabbing lijnen van een bestand op basis van een datum bsp18974 Programmeren en Shell Scripting 2 07-17-2006 09:58
zaak, die wordt gebaseerd op de beschikbaarheid bestand Loriel Programmeren en Shell Scripting 6 06-01-2004 09:24

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 05-14-2004
LordJezo
Score
  
 

Berichten: n / a
Bits: 0 [Banking]
Question Hoe krijg ik een if statement uit te voeren gebaseerd op het aantal lijnen in een bestand?

Ik moet een if-statement in een script te draaien als er bepaalde processen draaien. Eenvoudigste manier kan ik zien om dit te doen is om een ps voeren en de resultaten op basis van wat ik ben op zoek naar grep:

$ Ps-ef | grep wtrs
---
webtrend 5046 1 0 12 mei? 0:28 / webtrends/versions/6.1/wtrs_ui-start
---
webtrend 5030 1 0 12 mei? 3:29 / webtrends/versions/6.1/wtrs-start
---
webtrend 3550 5030 25 07:03:40? 91:09 / webtrends/versions/6.1/wtrs 314-kind
---
webtrend 6473 3999 0 09:10:08 pts / 4 0:00 grep wtrs
---
webtrend 4409 5030 11 07:35:54? 60:29 / webtrends/versions/6.1/wtrs 315-kind


("--" Toegevoegd als lijn seperators)


Normaal gesproken zou ik verwachten dat de eerste, tweede en vierde regel. Dat betekent dat alles normaal draait. De derde en de vijfde lijnen in dat voorbeeld aanwezig zijn omdat het programma (wtrs) momenteel bepaalde opdrachten uitvoeren.

Dus, wat ik wil doen is een if-statement dat zegt (in het Engels):

Als wtrs aanwezig is in het bovenstaande voorbeeld 3 of minder keer, voer de volgende commando's, anders iets anders doen.

Dus wat ik dacht te doen is voor het eerst het verzenden van de uitvoer van het ps commando in een tekstbestand:

$ Ps-ef | grep wtrs> test.txt

Dan is de if-statement zou kunnen zeggen:

Als test.txt <4 regels lang, uit te voeren.

Iedereen weet hoe zoiets mogelijk zou zijn, of als het zelfs mogelijk zou zijn?
  #2 (permalink)  
Old 05-14-2004
zazzybob's Avatar
zazzybob zazzybob is offline Forum Advisor  
Geregistreerd Geek
  
 

Join Date: december 2003
Locatie: Melbourne, Australië
Berichten: 2100
Gebruik wc-l te tellen de lijnen van de output

dat wil zeggen
Code:
if [ $( ps -ef | grep wtrs | wc -l ) -gt "3" ];
then
   # do stuff for more than 3 lines
else
   # do stuff for three or less lines
fi
vrede,
ZB
http://www.zazzybob.com
  #3 (permalink)  
Old 05-14-2004
LordJezo
Score
  
 

Berichten: n / a
Bits: 0 [Banking]
Citaat:
Oorspronkelijk geplaatst door zazzybob
Gebruik wc-l te tellen de lijnen van de output

dat wil zeggen
Code:
if [ $( ps -ef | grep wtrs | wc -l ) -gt "3" ];
then
   # do stuff for more than 3 lines
else
   # do stuff for three or less lines
fi
Wat is de-gt "3" wat bedoel je?
  #4 (permalink)  
Old 05-14-2004
zazzybob's Avatar
zazzybob zazzybob is offline Forum Advisor  
Geregistreerd Geek
  
 

Join Date: december 2003
Locatie: Melbourne, Australië
Berichten: 2100
-gt "3" betekent groter dan 3
  #5 (permalink)  
Old 05-14-2004
LordJezo
Score
  
 

Berichten: n / a
Bits: 0 [Banking]
Script ziet er als volgt uit:

#! / bin / sh
if [$ (ps-ef | grep wtrs | wc-l)-gt "3"];
dan
echo zijn lopende zaken
anders
echo kan worden stilgelegd
fi


fout wanneer het wordt uitgevoerd:

syntax error op regel 2: "(" onverwachte

  #6 (permalink)  
Old 05-14-2004
zazzybob's Avatar
zazzybob zazzybob is offline Forum Advisor  
Geregistreerd Geek
  
 

Join Date: december 2003
Locatie: Melbourne, Australië
Berichten: 2100
Probeer vervanging
if [$ (ps-ef | grep wtrs | wc-l)-gt "3"]; dan

met
if [ `ps-ef | grep wtrs | wc-l`-gt "3"]; dan

Je gebruikt de originele Bourne shell, dus probeer aanhalingstekens plaats.

Of overweeg het gebruik #! / Bin / ksh als het geïnstalleerd en de oorspronkelijke syntax hierboven.

Vrede
ZB
http://www.zazzybob.com
  #7 (permalink)  
Old 05-14-2004
LordJezo
Score
  
 

Berichten: n / a
Bits: 0 [Banking]
Thumbs up

Ah ha!

Dat was het. Silly me .. gewoon met een andere shell.

Thanks much.
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 04:24 PM.


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