Geht so was in der Shell?

  • Ab sofort steht euch hier im Forum die neue Add-on Verwaltung zur Verfügung – eine zentrale Plattform für alles rund um Erweiterungen und Add-ons für den DSM.

    Damit haben wir einen Ort, an dem Lösungen von Nutzern mit der Community geteilt werden können. Über die Team Funktion können Projekte auch gemeinsam gepflegt werden.

    Was die Add-on Verwaltung kann und wie es funktioniert findet Ihr hier

    Hier geht es zu den Add-ons

Status
Für weitere Antworten geschlossen.

jahlives

Benutzer
Registriert
19. Aug. 2008
Beiträge
18.275
Reaktionspunkte
4
Punkte
0
Ich hätte mal wieder eine Shellscript-Frage wo ich keinen Plan habe ob das überhaupt geht: Ich hole mir mit find eine Liste von Dateinamen und geh über diese dann mittels einer for Schleife. Jetzt habe ich ein zweites Verzeichnis wo diese Dateien drin sein können. Geht es irgendwie den find so zu erweitern, dass er zwei Verzeichnisse abgrast? Diese beiden Verzeichnisse liegen auf derselben Ebene im selben Elternverzeichnis
Im Prinzip so was
Code:
for i in $(find ./cur ./new -type f -ctime -4) ; do
....

Danke für jeden Tipp + Gruss

tobi

p.s. ja ich weiss dass ich einfach zwei Schleifen machen könnte ;-)
 
Du bist nur zu faul zum Ausprobieren, er grast *gg*

Der find hat als Option auch den -exec so dass man sich häufig die for-Schleife sparen kann.

Itari
 
Ganz ehrlich habe ich es ned probiert weil ich dachte so kann dat ja nie gehen ;-)
Ich werd gleich probieren und sorry fürs dumme Fragen ;-)
Das mit dem -exec wär vielleicht mal noch eine Überlegung wert (vergess den immer wieder). Aber in dem Fall gehts wohl ned, weil ich mit den Files mehrere Kommandos anwende.

Danke und Gruss

tobi
 
Aber in dem Fall gehts wohl ned, weil ich mit den Files mehrere Kommandos anwende.

Schau dir mal in den Skripten unter /usr/syno/etc/rc.d an, wie man in einem Shell-Skript eine Shell-Funktion bastelt. Soetwas kann man natürlich auch dem -exec (ev. mit xargs) übergeben. Es geht also immer, wenn man will, aber es ist natürlich auch nicht verkehrt, es über eine for-Schleife zu realisieren. Allerdings musste manchmal Seiteneffekte in Kauf nehmen: die Kommando-Substitution, als das $(...), muss in den Shell-Buffer (meist 8 KB) hineinpassen ... meist ist daher bei 'großen' Schleifen eine Pipe-Übergabe und ein Shell-read besser als ein for.

Itari
 
@itari
meine Schleife ist bereits in einer Shellfunktion. Von dem her wird es schwieriger das nochmal in eine Fkt auszulagern. Am Ende hätte ich dutzende Funktionen mit nur einer Codezeile drin ;-)
A propos Seiteneffekte: Die hatte ich mit dem verd*** Leerzeichen im Pfad schon zu genüge. Weder escapen noch Anführungszeichen haben wirklich geholfen. Ein Kommando ist immer darüber gestolpert :-) Letztlich hat nur ein cd ins Verzeichnis mit dem Leerzeichen und dann ein relativer find geholfen.

Falls es jemanden interessiert was ich damit mache: Das Script soll mir aus den Mails meiner Blocksoftware (fail2ban) die IPs der "Täter" zusammen mit den relevanten Logzeilen rausziehen und an die abuse-Adresse des jeweiligen Providers verschicken
 
Status
Für weitere Antworten geschlossen.
 

Kaffeautomat

Wenn du das Forum hilfreich findest oder uns unterstützen möchtest, dann gib uns doch einfach einen Kaffee aus.

Als Dankeschön schalten wir deinen Account werbefrei.

:coffee:

Hier gehts zum Kaffeeautomat