Kako izvesti logično operacijo OR v skriptni lupini

Poskušam opraviti preprosto preverjanje stanja, vendar se zdi, da ne deluje.

Če je $# enako 0 ali večje od 1, potem pozdravi.

Poskusil sem z naslednjo sintakso, vendar brez uspeha:

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

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

To bi moralo delovati:

#!/bin/bash

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

Nisem prepričan, ali je v drugih lupinah drugače, vendar če želite uporabiti , ju morate vstaviti v dvojne oklepaje, kot je navedeno:

if (("$#" > 1))
 ...
Komentarji (4)

Ta koda deluje zame:

#!/bin/sh

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

Mislim, da sh ne podpira "==". Uporabite "=" za primerjavo nizov in -eq za primerjavo intov.

man test

za več podrobnosti.

Komentarji (4)

ste poskusili nekaj takega:

if [ $# -eq 0 ] || [ $# -gt 1 ] 
then
 echo "$#"
fi
Komentarji (2)