М, а как это у вас между строчкой if и then ещё какие-то команды затесались?
if [[ ! -e i.mp4 ]]
then
echo "$i.mp4 not exist"
echo "Converting "$i"."
/usr/local/bin/ffmpeg -i ${video_folder}$i.mkv -acodec aac -strict experimental -ab 128k -ac 2 -vcodec libx264 -b 1200k -s 1280x720 -r 30 -threads 0 ${films_folder}$i.mp4 ; echo "Convert "$i" to mp4 is done!"
fi
Так всё ок.
Ну и я ещё позанудствую чуток:
for i in `ls -a $video_folder/*$file_mask*.mkv`
Никогда так не делайте, слышите? Никогда! Вдруг у вас в имени пробелы и всякие непечатыемые символы?
for i in $video_folder/*$file_mask*.mkv
Вот так правильно.
i=$(echo $i | sed 's/.mkv//' | sed 's%^.*/%%')
омг. на фига тут sed?
echo ${i/.mkv}
прекрасно со всем справится.
Ну и else с shift'ом тут совершенно не нужны.