Como adaptar esta construção bash a uma construção sh válida

0

Ao converter alguns scripts bash em uma plataforma na qual apenas / bin / sh está disponível, estou tropeçando nessa construção bash:

#!/bin/sh

   RSTPD=/sbin/rstpd
   RSTPCTL=/sbin/rstpctl
   RSTP=0
   bridgeprefix="gbr"
   #UPDATE_STRING=-b eth2 eth3
   BRIDGES="0"
   CSIF[0]="eth2"
   SSIF[0]="eth3"

       for b in $BRIDGES ; do
            echo Starting service bridge $bridgeprefix$b
            brctl addbr $bridgeprefix$b  ||  RETVAL=1
            if [ $RSTP == 0 ] ; then
              brctl stp $bridgeprefix$b on 
              brctl setbridgeprio $bridgeprefix$b 65000
            fi

            for br in ${CSIF[$b]} ; do  #<--bad substitution
                echo Adding CSIF $br on $bridgeprefix$b
                ifup $br
                brctl addif $bridgeprefix$b $br  ||  RETVAL=1
            done
       done

Recebi um erro de sintaxe: substituição ruim no segundo loop.

Como adaptar essa construção bash a uma construção compatível com sh?

    
por Oliver G. 21.10.2014 / 13:12

1 resposta

1

Dado o fato de suas matrizes terem apenas um elemento e de você testar uma variável constante, seu script, como está escrito, equivale a:

#!/bin/sh

bridge="gbr0"
CSIF="eth2"

echo Starting service bridge $bridge
brctl addbr $bridge || RETVAL=1
brctl stp $bridge on 
brctl setbridgeprio $bridge 65000

echo Adding CSIF $CSIF on $bridge
ifup $CSIF
brctl addif $bridge $CSIF ||  RETVAL=1
    
por 21.10.2014 / 13:56