allora per quanto riguarda il funzionamento dei test a me funge benissimo:

codice:
lasher@darkstar:~$ cat cacchiata
#!/bin/bash
 
if [ "$1" = "1" ]; then
  echo "parte prima"
    elif [ "$1" = "2" ]; then
      echo "parte seconda"
    elif [ "$1" = "3" ]; then
      echo "parte terza"
    else echo "non contemplato"
fi
lasher@darkstar:~$ ./cacchiata 1
parte prima
lasher@darkstar:~$ ./cacchiata 2
parte seconda
lasher@darkstar:~$ ./cacchiata 3
parte terza
lasher@darkstar:~$ ./cacchiata 4
non contemplato
ed è identico al tuo sistema di if nidificato.

Poi la Bash riconosce i valori dei parametri. Come hai visto ho messo dopo il nome dello script un valore che viene processato con la variabile $1

Spero di esserti d'aiuto

Ciauz