The backdrop to my solution recommendation is the story of a friend who, well into the second week of 
his first job, wiped half a build-server clean. So the basic task is to figure out if a file exists, 
and if so, let's delete it. But there are a few treacherous rapids on this river:
- Everything is a file. 
- Scripts have real power only if they solve general tasks 
- To be general, we use variables 
- We often use -f force in scripts to avoid manual intervention 
- And also love -r recursive to make sure we create, copy and destroy in a timely fashion. 
Consider the following scenario:
We have the file we want to delete: filesexists.json
This filename is stored in a variable
<host>:~/Documents/thisfolderexists filevariable="filesexists.json"
We also hava a path variable to make things really flexible
<host>:~/Documents/thisfolderexists pathtofile=".."
<host>:~/Documents/thisfolderexists ls $pathtofile
filesexists.json  history20170728  SE-Data-API.pem  thisfolderexists
So let's see if -e does what it is supposed to. Does the files exist?
<host>:~/Documents/thisfolderexists [ -e $pathtofile/$filevariable ]; echo $?
0
It does. Magic.
However, what would happen, if the file variable got accidentally be evaluated to nuffin'
<host>:~/Documents/thisfolderexists filevariable=""
<host>:~/Documents/thisfolderexists [ -e $pathtofile/$filevariable ]; echo $?
0
What? It is supposed to return with an error... And this is the beginning of the story how that entire 
folder got deleted by accident
An alternative could be to test specifically for what we understand to be a 'file'
<host>:~/Documents/thisfolderexists filevariable="filesexists.json"
<host>:~/Documents/thisfolderexists test -f $pathtofile/$filevariable; echo $?
0
So the file exists...
<host>:~/Documents/thisfolderexists filevariable=""
<host>:~/Documents/thisfolderexists test -f $pathtofile/$filevariable; echo $?
1
So this is not a file and maybe, we do not want to delete that entire directory
man test has the following to say:
-b FILE
       FILE exists and is block special
-c FILE
       FILE exists and is character special
-d FILE
       FILE exists and is a directory
-e FILE
       FILE exists
-f FILE
       FILE exists and is a regular file
...
-h FILE
       FILE exists and is a symbolic link (same as -L)