Estoy tratando de hacer una simple verificación de condición, pero no parece funcionar.
Si $#
es igual 0
o mayor que 1
entonces diga hola.
He intentado la siguiente sintaxis sin éxito:
if [ "$#" == 0 -o "$#" > 1 ] ; then
echo "hello"
fi
if [ "$#" == 0 ] || [ "$#" > 1 ] ; then
echo "hello"
fi
bash
unix
if-statement
sh
fresa
fuente
fuente
>
es la redirección de salida en sh / bash. Ahora probablemente tenga un archivo llamado1
.Respuestas:
Esto debería funcionar:
No estoy seguro de si esto es diferente en otros shells, pero si desea usar <,>, debe ponerlos entre paréntesis dobles de la siguiente manera:
fuente
Este código me funciona:
No creo que sh sea compatible con "==". Use "=" para comparar cadenas y -eq para comparar entradas.
para más detalles.
fuente
-gt
mayor que. O simplemente reemplácelo todo con[ $# -ne 1 ]
.Si está utilizando el estado del código de salida bash $? como variable, es mejor hacer esto:
Porque si lo haces:
La parte izquierda del OR altera el $? variable, entonces la parte derecha del OR no tiene el $ original ? valor.
fuente
A veces necesita usar corchetes dobles, de lo contrario, obtendrá un error como demasiados argumentos
fuente
Si un script bash
fuente
Has intentado algo como ésto:
fuente
echo
hola incluso cuando tengo un solo argumento.$#
podría ser el valor de retorno de la primera prueba?Del Manual de referencia de Bash → 3.4.2 Parámetros especiales
Por lo tanto,
$#
siempre será 0 o un número entero mayor.Entonces, si desea hacer algo siempre
$#
que sea 0 o mayor que 1, solo debe verificar si$#
es o no1
:Esto usa la sintaxis:
fuente
[[ -n $A ]] && echo 1 || echo 2
Y en Bash
O en Bash
fuente