Problema con el script Bash: 'declare: not found'

19

Tenía un script que funcionaba bien, pero cuando lo ejecuté hoy, dice declare: not found . Estoy usando Bash Shell y la ruta al inicio del script es correcta.

Dos líneas marcadas en mi script son las siguientes:

declare -a RESPONSE
RESPONSE=($RESULT)

También dice que ( es inesperado, pero creo que viene por el primer error. Vale la pena mencionar que cuando escribo declarar directamente funciona bien.

declare | grep USER muestra

USER=ashfame
USERNAME=ashfame
           values="$SVN_BASH_USERNAME";

Entonces, ¿qué pasa aquí?

    
pregunta Ashfame 27.02.2011 - 14:14

5 respuestas

23

¿Estás usando sh en vez de bash ? sh (vinculado a dash ) no admite declare palabra clave, ni la sintaxis

VAR=(list) 

para inicializar matrices.

    
respondido por el enzotib 27.02.2011 - 15:35
10

Sospecho que su línea "shebang" (la primera línea opcional del archivo) está haciendo referencia a sh en lugar de bash . Debería ser

#!/bin/bash

para scripts bash. Si la primera línea de su script es

#!/bin/sh

entonces eso indicaría que se usará un caparazón estrictamente compatible con Bourne; en el caso de Ubuntu, se usa dash . En muchas otras distribuciones, esto no causa ningún problema, ya que vinculan /bin/sh a /bin/bash ; sin embargo, ubuntu vincula a /bin/dash para permitir que los scripts del sistema se ejecuten más rápidamente.

El declare incorporado es una de las muchas extensiones de bash a la especificación del script de shell Bourne; dash simplemente implementa esa especificación sin extensiones.

    
respondido por el intuited 27.02.2011 - 15:46
3

Cómo reproducir el error anterior:

Estoy usando Ubuntu 14.04 64 bit. Pon este código en un archivo:

#!/bin/sh 
declare -i FOOBAR=12; 
echo $FOOBAR; 

Ejecútelo así:

el@apollo:~$ ./06.sh 
./test.sh: 2: ./test.sh: declare: not found

Para solucionarlo, haga esto en su lugar:

#!/bin/bash
declare -i FOOBAR=12;
echo $FOOBAR;

Impresiones:

el@apollo:~$ ./06.sh 
12
    
respondido por el Eric Leschinski 04.06.2014 - 00:23
1

Tuve el mismo problema, y ​​luego recordé que necesita asignar los permisos correctos para ejecutar el script de shell.

Cambiar permiso del script, por ejemplo:

chmod 755 script.sh
    
respondido por el Edgard Padilla 05.06.2012 - 19:39
1

Intenta ejecutar tu script usando /bin/bash en la línea de comandos si sh (:

En lugar de:

    sh script.sh

Probar:

    /bin/bash script.sh
    
respondido por el SkillFull 18.05.2017 - 05:45

Lea otras preguntas en las etiquetas