![-f $nombre_archivo no funciona cuando se usa ~/nombre_archivo pero funciona cuando se usa /home/james/nombre_archivo](https://rvso.com/image/1071720/-f%20%24nombre_archivo%20no%20funciona%20cuando%20se%20usa%20~%2Fnombre_archivo%20pero%20funciona%20cuando%20se%20usa%20%2Fhome%2Fjames%2Fnombre_archivo.png)
Esto me ha estado volviendo loco. Tengo un script bastante simple.
#!/bin/bash
read -p "Enter changeList.txt file name: " file_name
if [ -f $file_name ]; then
echo "Reading File..."
cat $file_name | grep "Change " | cut -d ' ' -f 2
echo "Process complete"
else
echo >&2 "File Note Found."
exit 1
fi
echo "Exiting..."
exit 0
Le paso un archivo ~/changeList.txt, que falla. Lo paso /home/james/changeList.txt y funciona. lo intento
file_name=~/changeList.txt
[ -f $file_name ] && echo "true" || echo "false"
desde mi terminal y devuelve verdadero.
Estoy usando Ubuntu en wsl 2 y he iniciado sesión como james.
Respuesta1
La expansión de tilde ocurre antes de la expansión variable. En una asignación, el valor del lado derecho sufre una expansión de tilde, por lo que a la variable se le asigna la ruta completa. Ver man bash
para más detalles.