[BashScript] Pfad zum Verzeichnis in einer Variable speichern

Reaver

Ensign
Registriert
Juli 2005
Beiträge
167
Warum funktioniert dieser Code:

Code:
for file in *
do
  if [ -h $file ]; then
    echo $file
    target=$(readlink "$file")
    echo $target
  fi
done

aber nicht sowas

Code:
SRC_PATH=/srv/folder/images/test/
echo $SRC_PATH

for file in $SRC_PATH
do
  if [ -h $file ]; then
    echo $file
    target=$(readlink "$file")
    echo $target
  fi
done

Muss der Pfad in Klammern geschrieben werden?
 
Ich kann nur eine Vermutung anstellen:

for Variable in erwartet eine Sammlung. Dies hast du ja im ersten Beispiel mit dem Wildcard *

Im zweiten Beispiel gibst du nur einen Ordner an, der vom for Befehl allerdings nur als String ausgewertet wird und eben nicht als Ordner wo reingeguckt wird, welche Files darin liegen
 
im 2. fall hast du einfach keine liste sondern ein "file" angegeben.
die schleife läuft so einmal mit file=/srv/folder/images/test/ durch.

du müsstest in der ersten zeile noch ein sternchen ergänzen.

Code:
SRC_PATH=/srv/folder/images/test/*
echo $SRC_PATH
 
for file in $SRC_PATH
do
  if [ -h $file ]; then
    echo $file
    target=$(readlink "$file")
    echo $target
  fi
done
 
Ah, Vielen Dank, das war der Fehler. Noch eine Frage.
Angenommen, ich lege die Variable SRC_PATH nicht selbst fest, sondern sie wird automatisch gesetzt, wie kann ich dieses Sternchen SRC_PATH anhängen?

Ich meine so was zum Beispiel:

Was ich aus einem anderen Script bekomme ist die Variable SRC_PATH
sie enthält exakt das: /srv/cloud/images/test

jetzt müsste ich irgendwie der Variable SRC_PATH " /* "
anhängen.
 
Zuletzt bearbeitet:
Zurück
Oben