Помогите отладить автоконвертер видео на bash плиз
М, а как это у вас между строчкой 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'ом тут совершенно не нужны.
Если у вас сообщение "${films_folder}$i.mp4 not exist" выводит правильное имя файла, то попробуйте перенести строки 13 и 14 внести под «then»:
if [[ ! -e "${films_folder}$i.mp4" ]]
then
    echo "${films_folder}$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!"
else
    shift
fi
