
Das hat mich verrückt gemacht. Ich habe ein ziemlich einfaches Skript
#!/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
Ich übergebe ihm eine Datei ~/changeList.txt, das schlägt fehl. Ich übergebe ihm /home/james/changeList.txt, und es funktioniert. Ich versuche
file_name=~/changeList.txt
[ -f $file_name ] && echo "true" || echo "false"
von meinem Terminal und es gibt true zurück.
Ich verwende Ubuntu auf WSL 2 und bin als James angemeldet.
Antwort1
Die Tilde-Erweiterung erfolgt vor der Variablenerweiterung. Bei einer Zuweisung wird der Wert auf der rechten Seite einer Tilde-Erweiterung unterzogen, sodass der Variablen der vollständige Pfad zugewiesen wird. Weitere man bash
Einzelheiten finden Sie unter.