» »

[bash] štetje vrstic

[bash] štetje vrstic

urosz ::

imam probleme, ker mi števec vrstic vedno vrne 0. recimo da pogoju ustreza 5 vrstic, mi jih teh 5 izpiše pravilno, števec n pa ostane vedno na 0. mogoče ve kdo, zakaj?

let "n = 0"

ps -ef | while read line
do	
   if [vrstica zadošča nekemu pogoju]; then
      let "n += 1"
      echo $line
   fi
done

echo Stevilo zadetkov: "$n"

technolog ::

n=0
n+=1


Let lahko kar spuščaš.

Drugač se mi pa zdi, da mamo isto zadevo. Izziv7 namreč :)

Zgodovina sprememb…

urosz ::

tudi to ne deluje. res mi ni jasno zakaj ne :P

Brane2 ::

declare -i n=0

Pa ne vem zakaj rabiš "let".

Pa pred in za enačajem pri bashu NI presledka
On the journey of life, I chose the psycho path.

urosz ::

zdaj mam tako, tudi ne deluje:

declare -i n=0

ps -ef | while read line
do	
   if [vrstica zadošča nekemu pogoju]; then
      n+=1
      echo $line
   fi
done

echo $n

Brane2 ::

kaj ti ne dela ?

Se ne poveča n ali ti nikoli ne izpiše nobene vrstice ?

Daj malo več opisa, nimam kristalne krogle.
On the journey of life, I chose the psycho path.

urosz ::

n se nikoli ne poveča, kljub temu da se izvede stavek. recimo da mi izpiše 5 vrstic, bi moral n biti 5x povečan za 1 = 5. ampak ostaja na 0.

amacar ::

v bashu sem jaz ponavadi naredil tako:
n=0
let n=$n+1

Brane2 ::

Meni dela:


#! /bin/bash

declare -i n=0

ps -ef | while read line
do
if [ "${line##*/lib64}" != "${line}" ] ;
then n+=1 ;
echo $line ;
echo
fi
done

echo $n
On the journey of life, I chose the psycho path.

urosz ::

ah končno, sem našel na spletu. problem je bil, da se v primeru:

ps -ef | while read line
do 
   ..
done

while zanka izvaja v sub-shellu, od kjer pa ni dostopa do spremenljivk glavnega shella in so vse lokalne.

rešitev:
while read line
do 
   ..
done < <(ps -ef)

pa deluje ne glede na to na kakšen način definiram in povečujem n

ok hvala vsem vseeno za pomoč

Brane2 ::

Ja, prav imaš. Sem spregledal, da sem nekaj zabrkljal.
On the journey of life, I chose the psycho path.

metalc ::

V realnem življenju se takšno nalogo najraje reši s pomočjo "stranišča" :D, torej zunanjega programčka wc (ime izvira iz word count), stikalo -l. man wc

Brane2 ::

Niti ne. Stalno pišem take mini skripte na gentooju, kjer narediš nekaj, vendar samo za del instaliranih paketov in nimaš samo števca linij.
On the journey of life, I chose the psycho path.


Vredno ogleda ...

TemaSporočilaOglediZadnje sporočilo
TemaSporočilaOglediZadnje sporočilo
»

Microsoftov giveaway knjig

Oddelek: Programiranje
162621 (1459) OvCa77
»

bash skripta ki bere txt

Oddelek: Programiranje
81099 (829) Mike0
»

Domaca Naloga OS

Oddelek: Programiranje
101293 (693) b
»

[UNIX] arg list too long

Oddelek: Programiranje
331932 (1187) bijonda
»

UNIX, mv, muvanje fajlse

Oddelek: Pomoč in nasveti
111267 (1133) BigWhale

Več podobnih tem