
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.