Hoe doe je een logische OF bewerking in shell scripting

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
Oplossing

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))
 ...
Commentaren (4)

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.

Commentaren (4)

heb je zoiets als dit geprobeerd:

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