Tenía un script que funcionaba bien, pero cuando lo ejecuté hoy, dice declare: not found. Estoy usando bash shell y la ruta al comienzo 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 supongo que está surgiendo debido al 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í?

#!/bin/bashúnica. ¿Querías decir cómo lo ejecuto? Solo intenté ejecutarlo como./script.shy funcionó. Pero no funciona comoscript.shosh script.shy estoy bastante seguro de que solía usar solo los dos últimos métodos mientras lo creé hace una semana. ¿Qué podría explicar eso?Sospecho que su línea "shebang" (la primera línea opcional del archivo) hace referencia en
shlugar debash. Debería serpara guiones bash. Si la primera línea de tu script es
entonces eso indicaría que se debe utilizar un shell estrictamente compatible con bourne; en el caso de Ubuntu,
dashse usa. En muchas otras distribuciones, esto no causa un problema, ya que se vinculan/bin/sha/bin/bash; sin embargo, ubuntu se enlaza para/bin/dashpermitir que los scripts del sistema se ejecuten más rápidamente.El
declareincorporado es una debashlas muchas extensiones de la especificación de script de shell Bourne;dashsolo implementa esa especificación sin extensiones.fuente
#!/bin/bashsolosh thescript.sh, elshshell, es decir,dashlo interpretará.sh script.sh. Entiendo lo que dijiste, pero he leído en alguna parte que con este métodobashlo interpretarás. ¿Por quédashconseguirlo aquí? ¿Es solo con Ubuntu? Puede ser lo que leí para Linux en general.sh scriptusted está ejecutando el comandoshcon el argumentoscript, lo que hace que sh lea y ejecute los comandos en ese archivo. El shebang no se lee por sh, comienza con un#, por lo que se trata como un comentario. Si, en su lugar./script, ejecuta , el núcleo leerá el shebang, que en su caso es#!/bin/bash, y así se ejecuta/bin/bash ./scriptdashse usará, así que necesito aclararloCómo reproducir el error anterior:
Estoy usando Ubuntu 14.04 de 64 bits. Pon este código en un archivo:
Ejecútelo así:
Para solucionarlo, haga esto en su lugar:
Huellas dactilares:
fuente
Tuve el mismo problema, y luego recordé que debes asignar los permisos correctos para ejecutar el script de shell.
Cambiar el permiso del script, por ejemplo:
fuente
Intente ejecutar su script usando la
/bin/bashlínea de comando en su lugar sish(:En lugar de :
Tratar :
fuente
En Ubuntu, puede tener un script que está ejecutando otros scripts dentro de él, con los que me he encontrado.
Cambiando todo
sh some_script.shpara$SHELL some_script.sharreglarlo.fuente