Încerc să fac o simplă verificare a condițiilor, dar nu pare să funcționeze.
Dacă $#
este egal cu 0
sau este mai mare decât 1
, atunci spuneți bună ziua.
Am încercat următoarea sintaxă fără succes:
if [ "$#" == 0 -o "$#" > 1 ] ; then
echo "hello"
fi
if [ "$#" == 0 ] || [ "$#" > 1 ] ; then
echo "hello"
fi
Acest lucru ar trebui să funcționeze:
#!/bin/bash
if [ "$#" -eq 0 ] || [ "$#" -gt 1 ] ; then
echo "hello"
fi
Nu sunt sigur dacă acest lucru este diferit în alte shell-uri, dar dacă doriți să utilizați <, >, trebuie să le puneți în interiorul parantezelor duble, astfel:
if (("$#" > 1))
...
Acest cod funcționează pentru mine:
#!/bin/sh
argc=$#
echo $argc
if [ $argc -eq 0 -o $argc -eq 1 ]; then
echo "foo"
else
echo "bar"
fi
Nu cred că sh suportă "==". Folosiți "=" pentru a compara șiruri de caractere și -eq pentru a compara ints.
man test
pentru mai multe detalii.