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
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))
...
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.