La declaración if
está realmente comprobando si hay un archivo llamado tost1
bajo un directorio llamado ~
, en lugar de su directorio de inicio. Puede comprobarlo de esta manera:
$ i=~
$ echo $i
~
$ echo ~
/home/ibug
Dos soluciones:
1. Evitar la tilde ~
en variables
Utilice $HOME
en su lugar.
Las tildes se expanden a $HOME
bajo un criterio muy estricto, que por supuesto no incluye cuando la tilde está en el valor de una variable.
Cámbiela a esto
i=$HOME/tost1
2. Permite que la shell lo evalúe de nuevo.
Cambia la línea a esto:
eval if [ -e ${i} ]; then echo \""el archivo existe"\"; fi
^~~~ ^~ ^~
Sin embargo, necesitas comillas adicionales para asegurarte de que la cadena "el archivo existe"
se trate como un único argumento para echo
.