когда Вы пишете
mv 'file.xml' 'new-file.xml'
в командной строке Bash'а, то именно
Bash "раскрывает" кавычки и запускает mv уже с параметрами в них:
mv file.xml new-file.xml
когда же Вы в
скрипте вызываете
mv $file ${new_file}
,
где $file='file.xml' (содержит кавычки)
то mv запускается с именем файла, содержащим кавычки, а такого файла-то и нет... (собственно, об этом и сказал
abcd0x00 )