Pfad wird durch script nicht betreten - angaben passen aber alle ?!

Vom einfachen Programm zum fertigen Debian-Paket, Fragen rund um Programmiersprachen, Scripting und Lizenzierung.
Antworten
Benutzeravatar
speefak
Beiträge: 449
Registriert: 27.04.2008 13:54:20

Pfad wird durch script nicht betreten - angaben passen aber alle ?!

Beitrag von speefak » 10.09.2023 17:53:46

Warum wird der Pfad zwar angezeigt aber nicht von cd geöffnet ?

Code: Alles auswählen

#!/bin/bash

LastModifiedDir=$(find  -type d -exec ls -td {} +  | grep "/" | head -n 1)

printf "open $LastModifiedDir \n"

ls -l "$LastModifiedDir"
cd "$LastModifiedDir"
geeb ich den cd befehl mit dem aus den o.g. Script angezeigten Pfad direkt in der Shell ein funktioniert es :roll:

tobo
Beiträge: 1997
Registriert: 10.12.2008 10:51:41

Re: Pfad wird durch script nicht betreten - angaben passen aber alle ?!

Beitrag von tobo » 10.09.2023 18:45:08

Der Verzeichniswechsel durch cd findet schon statt, da du durch das Skript aber eine neue Shell startest, nur in dieser neuen Shell. Starte mal mittels source oder . das Skript, dann siehst du das Ergebnis auch in der aufrufenden Shell.

TuxPeter
Beiträge: 1966
Registriert: 19.11.2008 20:39:02
Lizenz eigener Beiträge: MIT Lizenz

Re: Pfad wird durch script nicht betreten - angaben passen aber alle ?!

Beitrag von TuxPeter » 10.09.2023 18:56:12

Deine Zuweisung zu "Last..." stirbt bei mir als shell-Befehl beim "exec ls ..."

Code: Alles auswählen

 LastModifiedDir=$(find  -type d -exec ls -td {} +  | grep "/" | head -n 1)
find: Prozess ‘ls’ wurde durch das Signal 13 abgebrochen.
find: Prozess ‘ls’ wurde durch das Signal 13 abgebrochen.
find: Prozess ‘ls’ wurde durch das Signal 13 abgebrochen.
Empfehle, das in Einzelschritte zu zerlegen.

tobo
Beiträge: 1997
Registriert: 10.12.2008 10:51:41

Re: Pfad wird durch script nicht betreten - angaben passen aber alle ?!

Beitrag von tobo » 10.09.2023 19:14:28

TuxPeter hat geschrieben: Deine Zuweisung zu "Last..." stirbt bei mir als shell-Befehl beim "exec ls ..."
Das hat mit dem Problem aber nichts zu tun, der Pfad wird zugewisen. Das head will nur den ersten Satz und beendet die Pipe, das find (und damit das ls) will aber mehr liefern. Siehe dazu `man 7 signal': "SIGPIPE - Broken pipe: write to pipe with no readers; see pipe(7)"

Edit:
Die Fehlerausgabe könnte man unterdrücken:

Code: Alles auswählen

LastModifiedDir=$(find  -type d -exec ls -td {} + 2>/dev/null | grep "/" | head -n 1)

Benutzeravatar
speefak
Beiträge: 449
Registriert: 27.04.2008 13:54:20

Re: Pfad wird durch script nicht betreten - angaben passen aber alle ?!

Beitrag von speefak » 10.09.2023 20:39:12

Mit Debian 12 gibt keine Fehlermeldung mit Debian 11 schon.

Es sollte ein kleines Script werden um in den Backupordnern zu navigieren. Sprich aus dem Backup dcroot der webseite den letzten ordner öffnen und dann kurze abfrage datein anzeigen oder restore script ausführen

DirStruktur :

/backupDCroot/daily/website_name-2023-09-10_20:30
/backupDCroot/weekly/website_name-2023-09-10_20:30
/backupDCroot/monthly/website_name-2023-09-10_20:30

Um nicht immer mit cd durch die Verzeichnisse zu zappen soll halt das zuletzt modifizierte Verzeichnisse mit dem Befehl geöffnet werden. Am besten als direkter absoluter Pfad ( /mnt/storage
/backupDCroot/daily/website_name-2023-09-10_20:30 ). Das script sollte unter /usr/local/bin liegen um es einfach per shellcmd ausführen zu können ohne . ./script.sh sonder einfach mit script.sh.

tobo
Beiträge: 1997
Registriert: 10.12.2008 10:51:41

Re: Pfad wird durch script nicht betreten - angaben passen aber alle ?!

Beitrag von tobo » 10.09.2023 20:51:08

speefak hat geschrieben: ↑ zum Beitrag ↑
10.09.2023 20:39:12
Das script sollte unter /usr/local/bin liegen um es einfach per shellcmd ausführen zu können ohne . ./script.sh sonder einfach mit script.sh.
Das geht nicht - von der Kind-Shell kannst du nichts in die Eltern-Shell übertragen. Wenn dich source so dermaßen stört, dann entwerfe das halt als Funktion.

Benutzeravatar
speefak
Beiträge: 449
Registriert: 27.04.2008 13:54:20

Re: Pfad wird durch script nicht betreten - angaben passen aber alle ?!

Beitrag von speefak » 11.09.2023 04:13:48

Das habe ich mir fast gedacht. Alternativ wäre ein Stringexport in eine Datei noch denkbar.

Antworten