Estoy tratando de hacer una simple verificación de condición, pero no parece funcionar.
Si $#es igual 0o mayor que 1entonces 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
-gtmayor 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
echohola 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 2Y en Bash
O en Bash
fuente