Ich versuche, eine einfache Bedingungsprüfung durchzuführen, aber es scheint nicht zu funktionieren.
Wenn "$#" gleich "0" oder größer als "1" ist, dann sag "Hallo".
Ich habe die folgende Syntax ausprobiert, ohne Erfolg:
if [ "$#" == 0 -o "$#" > 1 ] ; then
echo "hello"
fi
if [ "$#" == 0 ] || [ "$#" > 1 ] ; then
echo "hello"
fi
Das sollte funktionieren:
#!/bin/bash
if [ "$#" -eq 0 ] || [ "$#" -gt 1 ] ; then
echo "hello"
fi
Ich bin mir nicht sicher, ob dies in anderen Shells anders ist, aber wenn Sie <, > verwenden möchten, müssen Sie sie in doppelte Klammern setzen, wie hier:
if (("$#" > 1))
...
Dieser Code funktioniert bei mir:
#!/bin/sh
argc=$#
echo $argc
if [ $argc -eq 0 -o $argc -eq 1 ]; then
echo "foo"
else
echo "bar"
fi
Ich glaube, sh unterstützt "==" nicht. Verwenden Sie "=", um Strings zu vergleichen und -eq, um Ints zu vergleichen.
man test
für weitere Details.
haben Sie so etwas schon einmal ausprobiert:
if [ $# -eq 0 ] || [ $# -gt 1 ]
then
echo "$#"
fi