bash - opciones - shell script example




Cómo hacer una operación OR lógica en Shell Scripting (5)

Estoy tratando de hacer una verificación de condición simple, pero no parece funcionar.

Si $# es igual a 0 o es mayor que 1 entonces di hola.

He intentado la siguiente sintaxis sin éxito:

if [ "$#" == 0 -o "$#" > 1 ] ; then
 echo "hello"
fi

if [ "$#" == 0 ] || [ "$#" > 1 ] ; then
 echo "hello"
fi

A veces necesitas usar corchetes dobles, de lo contrario obtendrás un error como demasiados argumentos

if [[ $OUTMERGE == *"fatal"* ]] || [[ $OUTMERGE == *"Aborting"* ]]
  then
fi

Este código funciona para mí:

#!/bin/sh

argc=$#
echo $argc
if [ $argc -eq 0 -o $argc -eq 1 ]; then
  echo "foo"
else
  echo "bar"
fi

No creo que sh apoye "==". Use "=" para comparar cadenas y -eq para comparar ints.

man test

para más detalles.


From Bash Reference Manual → 3.4.2 Parámetros especiales

#
($ #) Se expande al número de parámetros posicionales en decimal.

Por lo tanto, $# siempre será 0 o un entero más grande.

Entonces, si quieres hacer algo cuando $# sea ​​0 o mayor que 1, solo tienes que verificar si $# es o no es 1 :

[ $# -eq 1 ] && echo "1 positional param" || echo "0 or more than 1"

Esto utiliza la sintaxis:

[ condition ] && {things if true} || {things if false}

Has intentado algo como ésto:

if [ $# -eq 0 ] || [ $# -gt 1 ] 
then
 echo "$#"
fi

Si un script de bash

If [[ $input -gt number  ||  $input  -lt number  ]]
then 
    echo .........
else
    echo .........

fi

exit




sh