But when I try to store the output in input file itself, it is not working. The input file is empty after executing the command. Why?
Como o > input faz com que o shell trunque o arquivo antes que o comando tr seja executado. Incidentalmente, você pode contornar isso com o manuseio do descritor mais avançado em Bash :
exec 8<>input
exec 9<>input
tr '[A-Z]' '[a-z]' <&8 >&9
O exec #<>file abre um arquivo no descritor # no modo de leitura-gravação sem truncar.