Ik probeer een eenvoudige conditiecontrole te doen, maar het lijkt niet te werken.
Als $#
gelijk is aan 0
of groter is dan 1
, zeg dan hallo.
Ik heb de volgende syntax geprobeerd zonder succes:
if [ "$#" == 0 -o "$#" > 1 ] ; then
echo "hello"
fi
if [ "$#" == 0 ] || [ "$#" > 1 ] ; then
echo "hello"
fi
Dit zou moeten werken:
#!/bin/bash
if [ "$#" -eq 0 ] || [ "$#" -gt 1 ] ; then
echo "hello"
fi
Ik weet niet of dit in andere shells anders is, maar als je <, > wilt gebruiken, moet je ze binnen dubbele haakjes zetten, zoals dit:
if (("$#" > 1))
...
Deze code werkt voor mij:
#!/bin/sh
argc=$#
echo $argc
if [ $argc -eq 0 -o $argc -eq 1 ]; then
echo "foo"
else
echo "bar"
fi
Ik denk niet dat sh "==" ondersteunt. Gebruik "=" om strings te vergelijken en -eq om ints te vergelijken.
man test
voor meer details.