Estoy tratando de hacer una simple comprobación de la condición, pero parece que no funciona.
Si $#
es igual a 0
o es mayor que 1
entonces saluda.
He probado la siguiente sintaxis sin éxito:
if [ "$#" == 0 -o "$#" > 1 ] ; then
echo "hello"
fi
if [ "$#" == 0 ] || [ "$#" > 1 ] ; then
echo "hello"
fi
Esto debería funcionar:
#!/bin/bash
if [ "$#" -eq 0 ] || [ "$#" -gt 1 ] ; then
echo "hello"
fi
No estoy seguro de si esto es diferente en otros shells, pero si desea utilizar <, >, tiene que ponerlos dentro de paréntesis dobles así:
if (("$#" > 1))
...
Este código me funciona:
#!/bin/sh
argc=$#
echo $argc
if [ $argc -eq 0 -o $argc -eq 1 ]; then
echo "foo"
else
echo "bar"
fi
Creo que sh no soporta "==". Utiliza "=" para comparar cadenas y -eq para comparar ints.
man test
para más detalles.