Me pregunto para qué utilizas `` si no te lo piden, es decir, no necesitas sustituir variables, solo ejecuta y ya, mira esto:
Tu script funciona bien así:
#!/bin/bash
if [ $# -ge 2 ]
then
if [ -f $1 ] && [ $2 = "A" ]
then
cat $1 | sort -d
else
if [ -f $1 ] && [ $2 = "Z" ]
then
cat $1 | sort -r
fi
fi
else
echo "Error: Falta pasar argumentos"
fi
leo@lein:~/Escritorio$ bash shell.sh file.txt A
ayer fui al estadio.
bonitas ideas las que tú tienes.
entro al segundo palo y gol.
leo@lein:~/Escritorio$ bash shell.sh file.txt Z
entro al segundo palo y gol.
bonitas ideas las que tú tienes.
ayer fui al estadio.
leo@lein:~/Escritorio$