2012-09-17 14 views

Respuesta

6

Técnicamente, el único Lo que está roto es el espacio en blanco. No ponga espacios alrededor de los operadores de la sintaxis del shell:

config[$i]="value2" 

Sin embargo, hay un montón de otras pequeñas cosas que usted puede querer pensar. Por ejemplo, si un elemento de config puede contener espacios en blanco, la prueba puede romperse. Use comillas o la palabra clave de prueba [[ para evitar eso.

… if [[ ${config[$i]} = "value1" ]] 
    then config[$i]="value2" … 

seq es un ejecutable externo no estándar. Sería mejor utilizar la sintaxis de iteración incorporada. Por otra parte, suponiendo que la iteración pasa sobre todos los elementos en config, es probable que sólo quiere hacer:

for ((i=0; i<${#config[@]}; i++)); 
do 
    if [[ ${config[$i]} = "value1" ]] 
     then config[$i]="value2" 
    fi 
done 
2

Retire los 2 espacios adicionales como esto:

config[$i]="value2" 
Cuestiones relacionadas