Na linha 2, você perdeu um espaço entre o operador condicional !=
e o argumento ( 1
):
[ $# != 1 ]
Exemplo:
$ set -- foo bar
$ [ $# !=1 ] && echo "OK"
bash: [: 2: unary operator expected
$ [ $# != 1 ] && echo "OK"
OK
Além disso, você precisa fazer uma comparação de string, que pode falhar em muitos desses casos, por exemplo, e se a saída de $#
(substitua isso por outra variável) foi projetada para ser mostrada como 01
em vez de 1
. Portanto, ao fazer comparações aritméticas, use o operador de comparação aritmética, -ne
neste caso:
[ $# -ne 1 ]
Ou
(( $# != 1 ))