Quando você executa seu comando diff no shell normal, você está usando o shell atual (principalmente o bash).
Você recua para usar um shell bash para seu script, mas se você chamar seu script com "sh filediff.sh", chamará sh-Shell, que é um pouco diferente do bash.
Você pode chamar seu script com
bash filediff.sh
ou você pode torná-lo executável com
chmod +x filediff.sh
e ligue para
./filediff.sh