/ 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
mere shell scripting
Fra : Tonny Sejr Kromann


Dato : 15-02-01 11:56

Ja jeg bliver ved for jeg skal lige have lavet en håndfuld scripts.
Denne gang kan jeg ikke adressere posterne i et array.
Og som Frank Damgaard, i tråden "shell script aritmetik", påpegede er det
posix-shell.

#!/bin/sh

VOLUMEGROUP="/dev/vg88-test1"

DEVICES="/dev/rdsk/c4t9d3 \
/dev/dsk/c8t9d3 \
/dev/dsk/c4t8d4 \
/dev/dsk/c8t8d4 \
/dev/dsk/c5t8d4 \
/dev/dsk/c7t8d4 \
/dev/dsk/c4t9d2 \
/dev/dsk/c8t9d2 \
/dev/dsk/c4t8d3 \
/dev/dsk/c8t8d3"

NUMDEV=0
for i in $DEVICES; do
if [ $NUMDEV = 0 ]; then
echo "vgcreate -e 6000 $VOLUMEGROUP '$DEVICES[$NUMDEV]'"
else
echo "vgextend $VOLUMEGROUP '$DEVICES[${NUMDEV}]'"
fi
NUMDEV=`expr "$NUMDEV" + 1`;
done
echo $NUMDEV

Det jeg vil er at for første position i DEVICES vil jeg køre vgcreate og for
de andre vgextend.
Men mit output bliver:
vgcreate -e 6000 /dev/vg88-test1 '/dev/rdsk/c4t9d3 /dev/dsk/c8t9d3
/dev/dsk/c4t8d4 /dev/dsk/c8t8d4 /dev/dsk/c5t8d4 /dev/dsk/c7t8d4
/dev/dsk/c4t9d2 /dev/dsk/c8t9d2 /dev/dsk/c4t8d3 /dev/dsk/c8t8d3[0]'
vgextend /dev/vg88-test1 '/dev/rdsk/c4t9d3 /dev/dsk/c8t9d3 /dev/dsk/c4t8d4
/dev/dsk/c8t8d4 /dev/dsk/c5t8d4 /dev/dsk/c7t8d4 /dev/dsk/c4t9d2
/dev/dsk/c8t9d2 /dev/dsk/c4t8d3 /dev/dsk/c8t8d3[1]'
vgextend /dev/vg88-test1 '/dev/rdsk/c4t9d3 /dev/dsk/c8t9d3 /dev/dsk/c4t8d4
/dev/dsk/c8t8d4 /dev/dsk/c5t8d4 /dev/dsk/c7t8d4 /dev/dsk/c4t9d2
/dev/dsk/c8t9d2 /dev/dsk/c4t8d3 /dev/dsk/c8t8d3[2]'
vgextend /dev/vg88-test1 '/dev/rdsk/c4t9d3 /dev/dsk/c8t9d3 /dev/dsk/c4t8d4
/dev/dsk/c8t8d4 /dev/dsk/c5t8d4 /dev/dsk/c7t8d4 /dev/dsk/c4t9d2
/dev/dsk/c8t9d2 /dev/dsk/c4t8d3 /dev/dsk/c8t8d3[3]'
vgextend /dev/vg88-test1 '/dev/rdsk/c4t9d3 /dev/dsk/c8t9d3 /dev/dsk/c4t8d4
/dev/dsk/c8t8d4 /dev/dsk/c5t8d4 /dev/dsk/c7t8d4 /dev/dsk/c4t9d2
/dev/dsk/c8t9d2 /dev/dsk/c4t8d3 /dev/dsk/c8t8d3[4]'
vgextend /dev/vg88-test1 '/dev/rdsk/c4t9d3 /dev/dsk/c8t9d3 /dev/dsk/c4t8d4
/dev/dsk/c8t8d4 /dev/dsk/c5t8d4 /dev/dsk/c7t8d4 /dev/dsk/c4t9d2
/dev/dsk/c8t9d2 /dev/dsk/c4t8d3 /dev/dsk/c8t8d3[5]'
vgextend /dev/vg88-test1 '/dev/rdsk/c4t9d3 /dev/dsk/c8t9d3 /dev/dsk/c4t8d4
/dev/dsk/c8t8d4 /dev/dsk/c5t8d4 /dev/dsk/c7t8d4 /dev/dsk/c4t9d2
/dev/dsk/c8t9d2 /dev/dsk/c4t8d3 /dev/dsk/c8t8d3[6]'
vgextend /dev/vg88-test1 '/dev/rdsk/c4t9d3 /dev/dsk/c8t9d3 /dev/dsk/c4t8d4
/dev/dsk/c8t8d4 /dev/dsk/c5t8d4 /dev/dsk/c7t8d4 /dev/dsk/c4t9d2
/dev/dsk/c8t9d2 /dev/dsk/c4t8d3 /dev/dsk/c8t8d3[7]'
vgextend /dev/vg88-test1 '/dev/rdsk/c4t9d3 /dev/dsk/c8t9d3 /dev/dsk/c4t8d4
/dev/dsk/c8t8d4 /dev/dsk/c5t8d4 /dev/dsk/c7t8d4 /dev/dsk/c4t9d2
/dev/dsk/c8t9d2 /dev/dsk/c4t8d3 /dev/dsk/c8t8d3[8]'
vgextend /dev/vg88-test1 '/dev/rdsk/c4t9d3 /dev/dsk/c8t9d3 /dev/dsk/c4t8d4
/dev/dsk/c8t8d4 /dev/dsk/c5t8d4 /dev/dsk/c7t8d4 /dev/dsk/c4t9d2
/dev/dsk/c8t9d2 /dev/dsk/c4t8d3 /dev/dsk/c8t8d3[9]'
10

Og det er jo helt galt. Håber en af Jer kan hjælpe.

--
Tonny




 
 
Mogens Kjaer (15-02-2001)
Kommentar
Fra : Mogens Kjaer


Dato : 15-02-01 12:10

Tonny Sejr Kromann wrote:

> Og det er jo helt galt. Håber en af Jer kan hjælpe.

man bash

se under Arrays.

Mogens

--
Mogens Kjaer, Carlsberg Laboratory, Dept. of Chemistry
Gamle Carlsberg Vej 10, DK-2500 Valby, Denmark
Phone: +45 33 27 53 25, Fax: +45 33 27 47 08
Email: mk@crc.dk Homepage: http://www.crc.dk

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


Dato : 15-02-01 12:12

> man bash

Ok jeg finder lige en Linux-maskine hvor der er bash på.
Så håber jeg at bash = posix

--
Tonny




Christoffer Hall-Fre~ (15-02-2001)
Kommentar
Fra : Christoffer Hall-Fre~


Dato : 15-02-01 15:26


"Tonny Sejr Kromann" <tonny.kromann@wuerth.com> writes:
> Ok jeg finder lige en Linux-maskine hvor der er bash på.
> Så håber jeg at bash = posix

Så brug 'bash -posix' ;)

--
   Christoffer

"I'd crawl over an acre of 'Visual This++' and 'Integrated Development
That' to get to gcc, Emacs, and gdb. Thank you."
(By Vance Petree, Virginia Power)

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


Dato : 19-02-01 10:19

> > Ok jeg finder lige en Linux-maskine hvor der er bash på.
> > Så håber jeg at bash = posix
>
> Så brug 'bash -posix' ;)

Ok jeg omformulerer lige:

Så håber jeg posix = bash, idet det er på hpux, hvor jeg ikke har bash.

--
Tonny




Peter Makholm (19-02-2001)
Kommentar
Fra : Peter Makholm


Dato : 19-02-01 10:29

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

> Så håber jeg posix = bash, idet det er på hpux, hvor jeg ikke har bash.

Det er det ikke. Der er nogle bashimsmer som man bør undgå, hvis man
ønsker at skrive portabel kode. Jeg kan ikke lige komme på nogle med
sikkerhed, men mon ikke der blandt andet er noget med
variabelsubstitution der ikke er i posix.

--
Peter

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


Dato : 15-02-01 12:23

Den Thu, 15 Feb 2001 10:56:25 skrev "Tonny Sejr Kromann"
<tonny.kromann@wuerth.com>:

> NUMDEV=0
> for i in $DEVICES; do
> if [ $NUMDEV = 0 ]; then
> echo "vgcreate -e 6000 $VOLUMEGROUP '$DEVICES[$NUMDEV]'"
> else
> echo "vgextend $VOLUMEGROUP '$DEVICES[${NUMDEV}]'"
> fi
> NUMDEV=`expr "$NUMDEV" + 1`;
> done
> echo $NUMDEV

Prøv at erstatte $DEVICES[$NUMDEV] i ovenstående med $i.

--
Mvh
Allan

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


Dato : 15-02-01 13:29

>> echo "vgcreate -e 6000 $VOLUMEGROUP '$DEVICES[$NUMDEV]'"
>> else
>> echo "vgextend $VOLUMEGROUP '$DEVICES[${NUMDEV}]'"

>Prøv at erstatte $DEVICES[$NUMDEV] i ovenstående med $i.

Det var lige det, Allan.
Tak skal du have.

for i in $DEVICES; do
if [ $NUMDEV = 0 ]; then
echo "vgcreate -e 6000 $VOLUMEGROUP $i"
else
echo "vgextend $VOLUMEGROUP $i"
fi
NUMDEV=`expr "$NUMDEV" + 1`;
done

vgcreate -e 6000 /dev/vg88-test1 /dev/rdsk/c4t9d3
vgextend /dev/vg88-test1 /dev/dsk/c8t9d3
vgextend /dev/vg88-test1 /dev/dsk/c4t8d4
vgextend /dev/vg88-test1 /dev/dsk/c8t8d4
vgextend /dev/vg88-test1 /dev/dsk/c5t8d4
vgextend /dev/vg88-test1 /dev/dsk/c7t8d4
vgextend /dev/vg88-test1 /dev/dsk/c4t9d2
vgextend /dev/vg88-test1 /dev/dsk/c8t9d2
vgextend /dev/vg88-test1 /dev/dsk/c4t8d3
vgextend /dev/vg88-test1 /dev/dsk/c8t8d3

--
Tonny




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


Dato : 15-02-01 19:11

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

> NUMDEV=`expr "$NUMDEV" + 1`;

og i POSIX shell burde ovenstående kunne gøres med:

let NUMDEV=NUMDEV+1

(det virker på den HPUX jeg testede med)
Så spares et ekstra process-oprettelse (med `expr...`)
i hvert løkkegennemgang.

--
Frank Damgaard


Søg
Reklame
Statistik
Spørgsmål : 177514
Tips : 31968
Nyheder : 719565
Indlæg : 6408617
Brugere : 218887

Månedens bedste
Årets bedste
Sidste års bedste