Nesta linha:
if [ "$2" -eq '-o' ]
Você usou o operador aritmético -eq
, que considera o segundo argumento como um número.
Naturalmente, falha apenas por esse motivo.
Ao comparar strings, você pode usar o POSIX =
operator:
if [ "$2" = '-o' ]
Note que esta versão deve funcionar em todos os shells, como é definido por POSIX (Interface do Sistema Operacional Portátil) .
Se você quiser Bash - versão específica:
if [[ "$2" == '-o' ]]
Note que esta versão funcionará apenas em Bash (shell Bourne-again) e similares.
Por outro lado, os colchetes duplos [[ .. ]]
e ==
do operador são definidos em Bash somente e não funcionará em outros shells.