#!/bin/bash
if test "$#" == "4"; then echo "$*"; else echo "args-error" >&2; fi;
Este pequeño fragmento de código me preocupa mucho cuando intento ejecutarlo tanto en Ubuntu como en Cygwin.Error de sintaxis de Cygwin bash, pero el script se ejecuta perfectamente en Ubuntu
Ubuntu ejecuta la versión bash 4.0+, mientras que Cygwin ejecuta 3.2.49; Pero creo que la colisión de la versión no será la causa de esto, este código funciona bien en fedora 10 que también está utilizando bash versión 3. +
Así que, básicamente, me pregunto si hay una forma de codificar mi script de una vez y para todo para que no haya más problemas después.
Muchas gracias de antemano.
Editado: No tengo Cygwin a mano en este momento, pero de mi memoria, sigue diciendo algo así como no se pudo resolver el indefinido token "fi" algo así.
Editado: así, la forma original es así, acaba de encontrar desde el servidor:
#!/bin/bash
if ["$#" == "4"];
then echo "$*";
else echo "args-error" >&2;
fi;
consola se queja:
$ ./test.sh 1 2 3
./test.sh: line 2: [3: command not found
args-error
También me pregunto ¿cómo es que stderr dice algo va mal - comando no encontrado, pero aún puede imprimir la respuesta?
¿Cuál es el error que está recibiendo? Este fragmento de código parece funcionar bien para mí (Ubuntu 9.10, bash 4.0.33). – crazyscot
Se ve bien en mi Cygwin (también bash 3.2.49). ¿Cuál es el mensaje de error? – mob
@mobrule: lo siento, esa es la versión fija mediante el uso de la declaración de prueba, he actualizado la pregunta, ahora existe el error ... –