I have a file called `file_names_list.txt` which contains absolute file names, for example, the first line is: 
`~/Projects/project/src/files/file.mm`

I run a script to grep each of these files, 

```
for file in $(cat file_names_list.txt); do 
        echo "doing file: $file"
        grep '[ \t]*if (.* = .*) {' $file | while read -r line ; do ... 

```

and I get the output: 

```
doing file: ~/Projects/project/src/files/file.mm
grep: ~/Projects/project/src/files/file.mm: No such file or directory

```

But if I go to the terminal and enter

`grep '[ \t]*if (.* = .*) {' ~/Projects/project/src/files/file.mm`

I get the proper grep output 

What's the problem here? I'm out of ideas