Estou olhando isso há uma hora sem descobrir qual é o problema. A instrução else não está funcionando por algum motivo.
#!/bin/bash
if [ $#=3 ]
then
echo $*
else
echo "error" 1>&2
exit
fi
Responder1
O problema está na linha:
if [ $#=3 ]
Como não tem espaços ao redor =
, necessariamente está fazendo:
if [ -n $#=3 ]
teste que sempre será verdadeiro como =3
sempre está lá, portanto, else
nunca será acionado.
Você precisa usar espaços ao redor =
:
if [ $# = 3 ]
Use também aspas duplas na expansão de variáveis para evitar a divisão de palavras e a expansão do nome do caminho, o que não é estritamente necessário nesse caso $#
.