Sie sind nicht angemeldet.

  • »Palmstroem« ist der Autor dieses Themas

Beiträge: 6

Registrierungsdatum: 28.05.2016

Derivat: Ubuntu

Version: 14.04 LTS (Trusty Tahr)

Architektur: 64-Bit PC

Desktop: Unity

Andere Betriebssysteme: OS X, Windows 7

  • Nachricht senden

1

29.05.2016, 10:29

find funktioniert im Terminal aber nicht im Script

Hallo,

Ich will in einem Script einen selbst erstellten Ordner (gesuchter Ordner) in einem anderen Ordner (StartPfad) finden.
Gebe ich in der Konsole ein:

Quellcode

1
find ~/StartPfad -name "gesuchterOrdner" 

dann funktioniert's und er findet genau meinen Ordner.
Mache ich das selbe in einem Script (selbstverständlich mit Ausführungsrechen) und rufe es selbst auf, funktioniert's auch noch:

Quellcode

1
2
gefundenerPfad=${find ~StartPfad -name "gesuchterOrdner"}
echo $gefundenerPfad

Will ich den gefundenenPfad dann aber verwenden funktioniert's nicht gut etwa bei einem

Quellcode

1
2
3
if $gefundenerPfad
	 then... 
fi

bekomme ich immer eine Fehlermeldung: ... Permission denied
Oder bei:

Quellcode

1
echo ${gefundenerPfad/$StartPfad/"XYZ"}

erhalte ich: Bad Substitution
Was ist das Problem?

Danke für Eure Hilfe!

Dieser Beitrag wurde bereits 4 mal editiert, zuletzt von »Palmstroem« (29.05.2016, 17:04) aus folgendem Grund: Problem neu definiert.


  • »Palmstroem« ist der Autor dieses Themas

Beiträge: 6

Registrierungsdatum: 28.05.2016

Derivat: Ubuntu

Version: 14.04 LTS (Trusty Tahr)

Architektur: 64-Bit PC

Desktop: Unity

Andere Betriebssysteme: OS X, Windows 7

  • Nachricht senden

2

29.05.2016, 10:45

Problemstellung geändert

Ursprünlgicher Fehler erkannt, aber immer noch troubles. Bitte um Hilfe. Habe den Text oben etwas angepasst an meine neue Fragestellung.

Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von »Palmstroem« (29.05.2016, 16:16) aus folgendem Grund: Habe zwar den ursprünglichen Fehler erkannt, hänge aber immer noch.


3

29.05.2016, 14:58

Ursprünlgicher Fehler erkannt

Wenn du verraten würdest, welchen du schon erkannt hast...

Im übrigen solltest du
a) herausfinden, welche deine Standard-Shell ist und
b) die man-page dazu konsultieren

Deine Zeilen enthalten so viele Ungereimtheiten, daß man nicht weiß wo man anfangen soll.
mir is wurscht

  • »Palmstroem« ist der Autor dieses Themas

Beiträge: 6

Registrierungsdatum: 28.05.2016

Derivat: Ubuntu

Version: 14.04 LTS (Trusty Tahr)

Architektur: 64-Bit PC

Desktop: Unity

Andere Betriebssysteme: OS X, Windows 7

  • Nachricht senden

4

29.05.2016, 15:55

Oh weh! Sorry. Meine Standard-Shell ist die bash.

  • »Palmstroem« ist der Autor dieses Themas

Beiträge: 6

Registrierungsdatum: 28.05.2016

Derivat: Ubuntu

Version: 14.04 LTS (Trusty Tahr)

Architektur: 64-Bit PC

Desktop: Unity

Andere Betriebssysteme: OS X, Windows 7

  • Nachricht senden

5

29.05.2016, 16:10

Der ursprüngliche Fehler war, dass es im Terminal funktioniert hat, und im Script nicht.
Mein Fehler war gar nicht bei "find" sondern bei der Zuweisung zur Variablen.
Statt: gefundenerPfad=${find ...} hatte ich nur gefundenerPfad=find ...
Das funktioniert jetzt richtig.
Jetzt ist das Problem:
Wenn ich echo $gefundenerPfad ausgebe bekomme ich etwas wie:
/home/meinereiner/FolderA/FolderAa/gesuchterOrdner/
Nur das scheint kein String zu sein sondern irgend ein "Verzeichnis"-Typ zu dem ich einfach nix finden kann.

Jetzt will ich natürlich zuerst prüfen, ob er überhaupt einen Pfad gefunden hat.
if [ -d gefundenerPfad ] ... liefert aber immer true auch wenn nix gefunden wurde

Ich will einfach in dem gefundenen Pfad beispielsweise jetzt /home/meinereiner/ ersetzen durch /./
Also aus:
/home/meinereiner/FolderA/FolderAa/gesuchterOrdner/
soll
/./FolderA/FolderAa/gesuchterOrdner/
werden.

  • »Palmstroem« ist der Autor dieses Themas

Beiträge: 6

Registrierungsdatum: 28.05.2016

Derivat: Ubuntu

Version: 14.04 LTS (Trusty Tahr)

Architektur: 64-Bit PC

Desktop: Unity

Andere Betriebssysteme: OS X, Windows 7

  • Nachricht senden

6

29.05.2016, 17:07

Danke an Fredl.
Wenn man im Terminal zwar in einer Bash-Shell arbeitet, das Script aber in einer Sh-Shell ausführt passieren solche Dinge.
Sorry.