/ 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 script aritmetik
Fra : Tonny Sejr Kromann


Dato : 14-02-01 11:41

Hej

Jeg kan ikke får aritmetikken til at virke
Hvad gør jeg forkert i nedenstående?
Jeg skulle gerne kunne lave additioner osv. og har prøvet mange
syntaksformer, men får bla. fejlen: "./tmp[9]: 0: not found."
Der er sikkert en venlig sjæl der kan hjælpe.

#!/bin/sh
DEVICES="/dev/rdsk/c4t9d3 \
/dev/dsk/c4t8d4 \
/dev/dsk/c8t8d3"

NUMDEV=0
for i in $DEVICES; do
$NUMDEV = $NUMDEV + 1
done
echo $NUMDEV

--
Tonny




 
 
Arne Jørgensen (14-02-2001)
Kommentar
Fra : Arne Jørgensen


Dato : 14-02-01 11:43

"Tonny Sejr Kromann" <tonny.kromann@wuerth.com> writes:

> Hej
>
> Jeg kan ikke får aritmetikken til at virke
> Hvad gør jeg forkert i nedenstående?
> Jeg skulle gerne kunne lave additioner osv. og har prøvet mange
> syntaksformer, men får bla. fejlen: "./tmp[9]: 0: not found."
> Der er sikkert en venlig sjæl der kan hjælpe.
>
> #!/bin/sh
> DEVICES="/dev/rdsk/c4t9d3 \
> /dev/dsk/c4t8d4 \
> /dev/dsk/c8t8d3"
>
> NUMDEV=0
> for i in $DEVICES; do
> $NUMDEV = $NUMDEV + 1

Du skal væl ikke have det første $ med?

> done
> echo $NUMDEV

/arne
--
stud. scient. Arne Jørgensen
Børglumvej 2, v. 351, 8240 Risskov
tlf: 89 37 93 51, mobil: 21 65 01 13
e-post: arne@daimi.au.dk, http://www.daimi.au.dk/~arne/

Tonny Sejr Kromann (14-02-2001)
Kommentar
Fra : Tonny Sejr Kromann


Dato : 14-02-01 11:52

> > NUMDEV=0
> > for i in $DEVICES; do
> > $NUMDEV = $NUMDEV + 1
>
> Du skal væl ikke have det første $ med?
>
> > done
> > echo $NUMDEV

Sorry .. den fejler for hver t gennemløb af for-løkken. altså ved
additionen.

--
Tonny




Joakim Recht (14-02-2001)
Kommentar
Fra : Joakim Recht


Dato : 14-02-01 15:58

"Arne Jørgensen" <arne+usenet@daimi.au.dk> writes:

> "Tonny Sejr Kromann" <tonny.kromann@wuerth.com> writes:
>
> > Hej
> >
> > Jeg kan ikke får aritmetikken til at virke
> > Hvad gør jeg forkert i nedenstående?
> > Jeg skulle gerne kunne lave additioner osv. og har prøvet mange
> > syntaksformer, men får bla. fejlen: "./tmp[9]: 0: not found."
> > Der er sikkert en venlig sjæl der kan hjælpe.
> >
> > #!/bin/sh
> > DEVICES="/dev/rdsk/c4t9d3 \
> > /dev/dsk/c4t8d4 \
> > /dev/dsk/c8t8d3"
> >
> > NUMDEV=0
> > for i in $DEVICES; do
> > $NUMDEV = $NUMDEV + 1
>
> Du skal væl ikke have det første $ med?
>
> > done
> > echo $NUMDEV
>
> /arne
> --
> stud. scient. Arne Jørgensen
> Børglumvej 2, v. 351, 8240 Risskov
> tlf: 89 37 93 51, mobil: 21 65 01 13
> e-post: arne@daimi.au.dk, http://www.daimi.au.dk/~arne/
Som der også står i fx man bash, så skal matematiske udtryk kastes ind i $(()),
dvs du skal bruge
$NUMDEV=$(($NUMDEV+1))

--
Joakim Recht
Tlf. 20 85 54 77
Email god@cs.auc.dk
WWW http://www.braindump.dk / http://www.compuclub.dk

Tonny Sejr Kromann (14-02-2001)
Kommentar
Fra : Tonny Sejr Kromann


Dato : 14-02-01 16:39

> Som der også står i fx man bash, så skal matematiske udtryk kastes ind i
$(()),
> dvs du skal bruge
> $NUMDEV=$(($NUMDEV+1))

Hej Joachim
Det virkede desværre ikke. Det kører iøvrigt under Bourne shell under
hpux11.
Men tak for hjælpen alligevel.

--
Tonny




Peter Dalgaard BSA (14-02-2001)
Kommentar
Fra : Peter Dalgaard BSA


Dato : 14-02-01 16:47

"Tonny Sejr Kromann" <tonny.kromann@wuerth.com> writes:

> > Som der også står i fx man bash, så skal matematiske udtryk kastes ind i
> $(()),
> > dvs du skal bruge
> > $NUMDEV=$(($NUMDEV+1))
>
> Hej Joachim
> Det virkede desværre ikke. Det kører iøvrigt under Bourne shell under
> hpux11.
> Men tak for hjælpen alligevel.

Kan man overhovedet det i Bourne shell? Jeg synes at jeg husker
afskyeligheder af typen

NUMDEV=`echo $NUMDEV 1 + p | dc`

Men selv i bash skal der stadig ikke stå $ foran NUMDEV første gang:

[pd]$ NUMDEV=1
[pd]$ NUMDEV=$(($NUMDEV+1))
[pd]$ echo $NUMDEV
2

- og det kan vist forresten også undværes inden i $(( )).
--
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

frank damgaard (15-02-2001)
Kommentar
Fra : frank damgaard


Dato : 15-02-01 07:48

Tonny Sejr Kromann <tonny.kromann@wuerth.com> wrote:

>> Som der også står i fx man bash, så skal matematiske udtryk kastes ind i
> $(()),
>> dvs du skal bruge
>> $NUMDEV=$(($NUMDEV+1))

> Hej Joachim
> Det virkede desværre ikke. Det kører iøvrigt under Bourne shell under
> hpux11.

Så må du slå op under manuellen til din Bourne shell.
Men HPux, har den ikke en POSIX shell som default, med Bourne Shell
liggende i /usr/old/bin/sh ?

POSIX shell er /usr/bin/sh, og giver:

$ b=23
$ let a=9+b*2
$ echo $a
55

(dette fra en hpux10-20, hppa1.1)

Derudover er der bla. også en Korn shell (se "man sh")
--
Frank Damgaard


Tonny Sejr Kromann (15-02-2001)
Kommentar
Fra : Tonny Sejr Kromann


Dato : 15-02-01 09:30

>Men HPux, har den ikke en POSIX shell som default, med Bourne Shell
> liggende i /usr/old/bin/sh ?
> POSIX shell er /usr/bin/sh, og giver:

Jo du har ret.
I "man sh" står der bla.:

"executing the command sh activates the POSIX shell"
og
"However, the sh command has historically been associated with the
conventional Bourne shell, which could confuse some users."

Tingene fungerer også som beskrevet i dit eksempel.

Vi skal jo også være nogen der sover i timen :)

--
Tonny




Allan Jensen (14-02-2001)
Kommentar
Fra : Allan Jensen


Dato : 14-02-01 15:05

Den Wed, 14 Feb 2001 10:41:24 skrev "Tonny Sejr Kromann"
<tonny.kromann@wuerth.com>:

> NUMDEV=0
> for i in $DEVICES; do
> $NUMDEV = $NUMDEV + 1
> done
> echo $NUMDEV

Prøv NUMDEV=`expr "$NUMDEV" + 1`

--
Mvh
Allan

Tonny Sejr Kromann (14-02-2001)
Kommentar
Fra : Tonny Sejr Kromann


Dato : 14-02-01 16:37

Yo .. den er go'
Tak for det Allan.

--
Tonny




frank damgaard (14-02-2001)
Kommentar
Fra : frank damgaard


Dato : 14-02-01 15:14

Tonny Sejr Kromann <tonny.kromann@wuerth.com> wrote:


> Jeg kan ikke får aritmetikken til at virke
> Hvad gør jeg forkert i nedenstående?

Hvis du bruger bash så se "man bash" og "let" kommandoen.,


#!/bin/bash
.......
> NUMDEV=0
> for i in $DEVICES; do
> $NUMDEV = $NUMDEV + 1

let NUMDEV=NUMDEV+1

> done
> echo $NUMDEV



--
Frank Damgaard


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

Månedens bedste
Årets bedste
Sidste års bedste