Llevo una hora mirando esto sin saber cuál es el problema. La declaración else no funciona por alguna razón.
#!/bin/bash
if [ $#=3 ]
then
echo $*
else
echo "error" 1>&2
exit
fi
Respuesta1
El problema está en la línea:
if [ $#=3 ]
Como no tienes espacios alrededor =
, necesariamente se hace:
if [ -n $#=3 ]
prueba que siempre será verdadera, ya que =3
siempre está ahí, por lo tanto, else
nunca se activará.
Necesitas usar espacios alrededor =
:
if [ $# = 3 ]
Utilice también comillas dobles en la expansión de variables para evitar la división de palabras y la expansión de nombres de rutas, aunque no es estrictamente necesario en este caso $#
.