Recibo el error “array.sh: 3: array.sh: error de syntax:” (“inesperado”

He escrito el siguiente código:

#!/bin/bash #Simple array array=(1 2 3 4 5) echo ${array[*]} 

Y obtengo el error: array.sh: 3: array.sh: error de syntax: “(” inesperado

Por lo que llegué a saber de Google, esto podría deberse al hecho de que Ubuntu no está tomando “#! / Bin / bash” de manera predeterminada … pero luego agregué la línea, pero el error sigue apareciendo.

¡También lo intenté ejecutando bash array.sh pero sin suerte! Imprime en blanco.

Mi versión de Ubuntu es: Ubuntu 14.04

Dado ese guion:

 #!/bin/bash #Simple array array=(1 2 3 4 5) echo ${array[*]} 

y asumiendo:

  • Está en un archivo en su directorio actual llamado array.sh ;
  • Has hecho chmod +x array.sh ;
  • Tienes una versión suficientemente nueva de bash instalada en /bin/bash (informas que tienes 4.3.8, que es ciertamente lo suficientemente nuevo); y
  • Lo ejecutas correctamente

entonces eso debería funcionar sin ningún problema.

Si ejecuta el script escribiendo

 ./array.sh 

el sistema prestará atención a la línea #!/bin/bash y ejecutará el script usando /bin/bash .

Si lo ejecutas escribiendo algo como:

 sh ./array.sh 

luego lo ejecutará usando /bin/sh . En Ubuntu, /bin/sh suele ser un enlace simbólico a /bin/dash , un shell tipo Bourne que no admite matrices. Eso le dará exactamente el mensaje de error que usted informa.

El shell utilizado para ejecutar un script no se ve afectado por el shell que está utilizando en ese momento o por el shell configurado como su shell de inicio de sesión en /etc/passwd o equivalente (a menos que use el comando source o . ).

En su propia respuesta, dice que chsh el problema usando chsh para cambiar su shell de inicio de sesión predeterminado a /bin/bash . Eso por sí solo no debería tener ningún efecto. (Y /bin/bash es el shell de inicio de sesión predeterminado en Ubuntu de todos modos, ¿lo había cambiado a algo más previamente?)

Lo que debe haber sucedido es que cambiaste el comando que usas de sh ./array.sh a ./array.sh sin darte cuenta.

Intente ejecutar sh ./array.sh y vea si obtiene el mismo error.

En lugar de usar sh para ejecutar el script,

prueba el siguiente comando:

 bash ./array.sh 

Resolví el problema milagrosamente. Para resolver el problema, encontré un enlace donde se describía que se había ido utilizando el siguiente código. Después de ejecutarlos, el problema se resolvió.

 chsh -s /bin/bash adhikarisubir grep ^adhikarisubir /etc/passwd 

FYI, “adhikarisubir” es mi nombre de usuario .

Después de ejecutar estos comandos, bash array.sh produjo el resultado deseado.