![-f $file_name não funciona ao usar ~/file_name mas funciona ao usar /home/james/file_name](https://rvso.com/image/1071720/-f%20%24file_name%20n%C3%A3o%20funciona%20ao%20usar%20~%2Ffile_name%20mas%20funciona%20ao%20usar%20%2Fhome%2Fjames%2Ffile_name.png)
Isso tem me deixado maluco. Eu tenho um script bem simples
#!/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
Eu passo um arquivo ~/changeList.txt, que falha. Eu passo /home/james/changeList.txt e funciona. eu tento
file_name=~/changeList.txt
[ -f $file_name ] && echo "true" || echo "false"
do meu terminal e ele retorna verdadeiro.
Estou usando o Ubuntu no wsl 2 e estou conectado como James.
Responder1
A expansão do til acontece antes da expansão da variável. Em uma atribuição, o valor do lado direito sofre expansão de til, então a variável recebe o caminho completo. Veja man bash
para detalhes.