O que você está fazendo errado é verificar $ 1 em relação a '.txt', em que $ 1 não conterá apenas a extensão, mas o nome completo do arquivo. Por exemplo, se houver um arquivo chamado
file1.txt
então $ 1 irá reter file1.txt
como valor que não é igual a .txt
.
O que você deve fazer é obter a extensão do arquivo primeiro de $ 1 e depois verificá-lo com o tipo (sem ponto)
v1="$1"
v2="$2"
ext1=${v1##*.}
ext2=${v2##*.}
if [ "$ext1" != "txt" ] || [ "$ext2" != "dat" ] || [ ! -e "$1" ]; then
echo "The file is ending"
exit
fi
echo "Starting rest of code"