|
| 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
| |
|
|