bash script $HOME auflösen

FrankBooth

Erfahrenes Mitglied
Hallo zusammen,

ich schreibe an einem Skript, dass Dateipfade aus einer Datei ausließt und die Dateien in ein Zielverzeichnis verschiebt. Leider kann an einer Stelle $HOME nicht aufgelöst werden. Hier der relevante Code:

Code:
#Methode zum testen ob eine Datei existiert, 1:existiert, 0:existiert nicht
is_existing ()
{    
     echo $HOME
     if [ ! -f $1 ] ;
     then 
        return 0
     else
    	return 1
     fi
}


#Daten aus Datei lesen und verschieben, wenn Datei vorhanden
for i in $(cat $dataFile)
do
echo $i
is_existing $i
if [ "$?" -eq 1 ];
   then mv $i $targetDirectory
   else echo "Datei nicht vorhanden:"
        echo $i
fi
done

In der Methode is_existing () wird in der Zeile

Code:
if [ ! -f $1 ] ;

in $1 wird $HOME nicht aufgelöst. echo $HOME gibt den Pfad richtig aus

Aus der Datei kommen die Pfade und Namen der Dateien:

$HOME/daten.dat <- geht nicht
/f/frankbooth/daten.dat <-geht

Denke mal, es wird $HOME/daten.dat als string verarbeitet und daher nicht aufgelöst. Kann jemand helfen?
Danke und schönes WE!

Frank
 
Zuletzt bearbeitet:
Hi

Es wäre ziemlicher Unfug Variablen mehrfach zu expandieren bis keine Variablenexpansion mehr möglich ist, meinst du nicht auch?

Bash:
$ x='my $HOME is my castle'
$ echo $x
my $HOME is my castle
$ eval "echo $x"
my /home/user is my castle
$ echo "${x/\$HOME/$HOME}"
my /home/user is my castle
Die letzte Variante würde ich vorziehen, falls du nicht vorhast beliebige Variablen und Befehle aus der Datei auszuführen, a la:
Code:
/toller/pfad/$(rm -rf /)
 
Zurück