/ Forside / Teknologi / Operativsystemer / Linux / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
Linux
#NavnPoint
o.v.n. 11177
peque 7911
dk 4814
e.c 2359
Uranus 1334
emesen 1334
stone47 1307
linuxrules 1214
Octon 1100
10  BjarneD 875
[Shell] Problem med lille løkke/variabel
Fra : Michael Andreasen


Dato : 29-10-02 12:52

Hey... Jeg har en fil med en lang liste af tal, f.eks.

12234
43534
234232
432
42342

Så prøver jeg at tælle alle de linier sammen med:

A='0'

while read VAR; do
echo $VAA
A='$A+$VAR'

done < zipbytes

Men det virker ikke rigtigt.. output bliver noget i denne retning:

$A+1
32273
$A+1
9894
$A+1
43648

Det er altså sammentællingen af 'A' som er problemet.. Nogen der kan hjælpe?

--
Mvh Michael Andreasen

"...There are only 10 types of people in the world...........those who
understand binary jokes, and those who don't..."

 
 
Thorbjoern Ravn Ande~ (29-10-2002)
Kommentar
Fra : Thorbjoern Ravn Ande~


Dato : 29-10-02 13:03

Michael Andreasen <maskinen2000@hotmail.com> writes:

> Det er altså sammentællingen af 'A' som er problemet.. Nogen der kan hjælpe?

Jeg gaar ud fra at det er "sh" i en eller anden variant.

Den bruger "expr" til at regne med. Du laver pt tildeling af en
strengkonstant.

--
Thorbjørn Ravn Andersen
http://unixsnedkeren.dk - Unix, Java, Web, Netværk, Århus

Michael Andreasen (29-10-2002)
Kommentar
Fra : Michael Andreasen


Dato : 29-10-02 13:10

Thorbjoern Ravn Andersen wrote:

> Jeg gaar ud fra at det er "sh" i en eller anden variant.

Bash

> Den bruger "expr" til at regne med. Du laver pt tildeling af en
> strengkonstant.

ok,tak. det kigger jeg lige på.

--
Mvh Michael Andreasen

"...There are only 10 types of people in the world...........those who
understand binary jokes, and those who don't..."

Michael Andreasen (29-10-2002)
Kommentar
Fra : Michael Andreasen


Dato : 29-10-02 13:31

Michael Andreasen wrote:

>> Den bruger "expr" til at regne med. Du laver pt tildeling af en
>> strengkonstant.
>
> ok,tak. det kigger jeg lige på.

Nej jeg er desværre helt blank.. Er der nogen der kan hjælpe mig videre?

--
Mvh Michael Andreasen

"...There are only 10 types of people in the world...........those who
understand binary jokes, and those who don't..."

Torben Simonsen (29-10-2002)
Kommentar
Fra : Torben Simonsen


Dato : 29-10-02 13:35

Michael Andreasen <maskinen2000@hotmail.com> writes:

> Thorbjoern Ravn Andersen wrote:
>
> > Jeg gaar ud fra at det er "sh" i en eller anden variant.
>
> Bash

I forholdsvis nye versioner af bash er der noget med, at man kan
bruge dobbelte parenteser omkring et aritmetisk udtryk i stedet
for at bruge expr.

Prøv at skrive din sammentællingslinie på følgende måde:

(( A=$A+$VAR ))

Der står lidt om det i 'man bash'. Søg på "Compound Commands".

--
-- Torben.

Michael Andreasen (29-10-2002)
Kommentar
Fra : Michael Andreasen


Dato : 29-10-02 13:42

Torben Simonsen wrote:

> I forholdsvis nye versioner af bash er der noget med, at man kan
> bruge dobbelte parenteser omkring et aritmetisk udtryk i stedet
> for at bruge expr.
>
> Prøv at skrive din sammentællingslinie på følgende måde:
>
> (( A=$A+$VAR ))

Ja! Det var *det* der skulle til Tusind tak...

--
Mvh Michael Andreasen

"...There are only 10 types of people in the world...........those who
understand binary jokes, and those who don't..."

Torben Simonsen (29-10-2002)
Kommentar
Fra : Torben Simonsen


Dato : 29-10-02 13:46

Torben Simonsen <ts@biograferne.dk> writes:

> Prøv at skrive din sammentællingslinie på følgende måde:
>
> (( A=$A+$VAR ))
>
> Der står lidt om det i 'man bash'. Søg på "Compound Commands".

Nåja, og så bare lige for at hælde lidt salt i såret: Det er
selvfølgelig fint nok, at du vil lave din sammentælling i bash,
men det samme kan udtrykkes langt mere kompakt med en one-liner
i awk eller perl.

Her er awk-udgaven:

awk '{A=A+$1} END {print A}' < zipfile

--
-- Torben.

Michael Andreasen (29-10-2002)
Kommentar
Fra : Michael Andreasen


Dato : 29-10-02 14:52

Torben Simonsen wrote:

> Nåja, og så bare lige for at hælde lidt salt i såret: Det er
> men det samme kan udtrykkes langt mere kompakt med en one-liner
> i awk eller perl.
>
> awk '{A=A+$1} END {print A}' < zipfile

av Noget smartere må jeg sige.. Jeg må se og få kigget nærmere på awk
(og sed - for den sags skyld) en af de nærmeste dage :)

Tak for input.

Mvh Michael Andreasen

"...There are only 10 types of people in the world...........those who
understand binary jokes, and those who don't..."

Leif Neland (03-11-2002)
Kommentar
Fra : Leif Neland


Dato : 03-11-02 08:09

> Nåja, og så bare lige for at hælde lidt salt i såret: Det er
> selvfølgelig fint nok, at du vil lave din sammentælling i bash,
> men det samme kan udtrykkes langt mere kompakt med en one-liner
> i awk eller perl.
>
> Her er awk-udgaven:
>
> awk '{A=A+$1} END {print A}' < zipfile
>

Det kan da laves bedre:

A+=$1 i stedet for A=A+$1.
Så sparer du et helt tegn

Leif



Peter Dalgaard BSA (03-11-2002)
Kommentar
Fra : Peter Dalgaard BSA


Dato : 03-11-02 11:08

"Leif Neland" <leif@neland.dk> writes:

> > awk '{A=A+$1} END {print A}' < zipfile
> >
>
> Det kan da laves bedre:
>
> A+=$1 i stedet for A=A+$1.
> Så sparer du et helt tegn

...eller A++ så sparer du 2 til. (For slet ikke at snakke om wc -l < zipfile)

--
O__ ---- Peter Dalgaard Blegdamsvej 3
c/ /'_ --- Dept. of Biostatistics 2200 Cph. N
(*) \(*) -- University of Copenhagen Denmark Ph: (+45) 35327918
~~~~~~~~~~ - (p.dalgaard@biostat.ku.dk) FAX: (+45) 35327907

Thomas (03-11-2002)
Kommentar
Fra : Thomas


Dato : 03-11-02 11:12

Peter Dalgaard BSA wrote:
> "Leif Neland" <leif@neland.dk> writes:
>
>> > awk '{A=A+$1} END {print A}' < zipfile
>> >
>>
>> Det kan da laves bedre:
>>
>> A+=$1 i stedet for A=A+$1.
>> Så sparer du et helt tegn
>
> ..eller A++ så sparer du 2 til. (For slet ikke at snakke om wc -l < zipfile)

Du skal ikke skrive i news så tidligt om morgenen ;)

det er jo ikke sikkert at $1 == 1

--
Don't waste space

Peter Dalgaard BSA (03-11-2002)
Kommentar
Fra : Peter Dalgaard BSA


Dato : 03-11-02 11:22

Thomas <inthenews@corell.dk> writes:

> Peter Dalgaard BSA wrote:
> > "Leif Neland" <leif@neland.dk> writes:
> >
> >> > awk '{A=A+$1} END {print A}' < zipfile
> >> >
> >>
> >> Det kan da laves bedre:
> >>
> >> A+=$1 i stedet for A=A+$1.
> >> Så sparer du et helt tegn
> >
> > ..eller A++ så sparer du 2 til. (For slet ikke at snakke om wc -l < zipfile)
>
> Du skal ikke skrive i news så tidligt om morgenen ;)
>
> det er jo ikke sikkert at $1 == 1

Doh.... ups. Ja, det er øjnene man først bliver blind på.

--
O__ ---- Peter Dalgaard Blegdamsvej 3
c/ /'_ --- Dept. of Biostatistics 2200 Cph. N
(*) \(*) -- University of Copenhagen Denmark Ph: (+45) 35327918
~~~~~~~~~~ - (p.dalgaard@biostat.ku.dk) FAX: (+45) 35327907

Søg
Reklame
Statistik
Spørgsmål : 177557
Tips : 31968
Nyheder : 719565
Indlæg : 6408872
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste