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 ))