Προσπαθώ να κάνω έναν απλό έλεγχο κατάστασης, αλλά δεν φαίνεται να λειτουργεί.
Αν $#
είναι ίσο με 0
ή είναι μεγαλύτερο από 1
τότε πείτε γεια.
Δοκίμασα την ακόλουθη σύνταξη χωρίς επιτυχία:
if [ "$#" == 0 -o "$#" > 1 ] ; then
echo "hello"
fi
if [ "$#" == 0 ] || [ "$#" > 1 ] ; then
echo "hello"
fi
Αυτό θα πρέπει να λειτουργήσει:
#!/bin/bash
if [ "$#" -eq 0 ] || [ "$#" -gt 1 ] ; then
echo "hello"
fi
Δεν είμαι σίγουρος αν αυτό είναι διαφορετικό σε άλλα κελύφη, αλλά αν θέλετε να χρησιμοποιήσετε τα <, >, πρέπει να τα βάλετε μέσα σε διπλή παρένθεση όπως παρακάτω:
if (("$#" > 1))
...
Αυτός ο κώδικας λειτουργεί για μένα:
#!/bin/sh
argc=$#
echo $argc
if [ $argc -eq 0 -o $argc -eq 1 ]; then
echo "foo"
else
echo "bar"
fi
Δεν νομίζω ότι η sh υποστηρίζει το "==". Χρησιμοποιήστε το "=" για να συγκρίνετε συμβολοσειρές και το -eq για να συγκρίνετε ints.
man test
για περισσότερες λεπτομέρειες.
έχετε δοκιμάσει κάτι τέτοιο:
if [ $# -eq 0 ] || [ $# -gt 1 ]
then
echo "$#"
fi