• Apfeltalk ändert einen Teil seiner Allgemeinen Geschäftsbedingungen (AGB), das Löschen von Useraccounts betreffend.
    Näheres könnt Ihr hier nachlesen: AGB-Änderung
  • Viele hassen ihn, manche schwören auf ihn, wir aber möchten unbedingt sehen, welche Bilder Ihr vor Eurem geistigen Auge bzw. vor der Linse Eures iPhone oder iPad sehen könnt, wenn Ihr dieses Wort hört oder lest. Macht mit und beteiligt Euch an unserem Frühjahrsputz ---> Klick

Fehler in Automator-Script

quiddjes

Danziger Kant
Registriert
08.10.09
Beiträge
3.903
Moin, ich habe eine Ordneraktion für meinen Downloads-Ordner, das ein ZSH-Shellscript startet, definiert mit folgendem Coding:

for f in "$@"
do

DEST=""
filedate=$(date -r $(stat -f %B $f) +%Y%m);
filename=$f:t

if [[ $f == *"intern"* ]]
then DEST="/Users/ralf/Library/Mobile Documents/com~apple~CloudDocs/Documents/RLS Selbsthilfegruppe/RLS intern"

if [[ $DEST != "" ]]
then
mv $f $DEST/{"$filename","\"RLS intern\" $filedate"}

fi

done

Zweck: Jede im Downloads-Ordner landende Datei, deren Name die Zeichenkette "intern" enthält, sie in den Unter DEST definierten Ordner verschieben (das funktioniert) und dabei umbenennen in "RLS intern yyyymm" (YYYY = Jahr, MM = Monat). Was nicht funktioniert: Der rot gefärbte Teil des Codings, der den Namen ändern soll. Vielleicht findet jemand anderes den Fehler.

Folgefrage: Wie muss ich das IF ändern, wenn ich nach ZWEI Zeichenketten suchen will, die beide im Namen enthalten sein müssen? Versucht habe ich:

if [[ $f == *"RLS"* ]] and [[ $f == *"intern"* ]]

sowie

if [[ $f == *"RLS"*"intern"* ]]

Beides hat nicht funktioniert. Ich bin für jeden Tipp sehr dankbar.

BTW: gibt es ein gutes Tutorial für sowas, idealerweise auf deutsch? Ich hab bisher nur zwei MacMost-Videos dazu gesehen.
 

quiddjes

Danziger Kant
Registriert
08.10.09
Beiträge
3.903
Dann mal anders gefragt:

Machen die Kurzbefehle auf dem Mac Automator eigentlich obligatorisch? Sollte ich lieber einen Kurzbefehl erstellen stattdessen? (ja, das löst mein Problem nicht, aber ehe ich auf eine veraltete Plattform setze....)

Wo sollte ich fragen, wenn mir hier bei meinem Problem niemand weiterhelfen kann?
 

sedna

Galloway Pepping
Registriert
22.10.08
Beiträge
1.359
Hallo,
Machen die Kurzbefehle auf dem Mac Automator eigentlich obligatorisch? Sollte ich lieber einen Kurzbefehl erstellen stattdessen? (ja, das löst mein Problem nicht, aber ehe ich auf eine veraltete Plattform setze....)

Mit der Kurzbefehle App alleine kann man keine Ordneraktion erstellen.

Automator und Kurzbefehle App sind noch zwei verschiedene Programme. Viele Automator-Abläufe ließen sich allerdings auch mit Kurzbefehle erstellen (man kann sogar Automator-Abläufe in Kurzbefehl-Abläufe umwandeln) und mit der Kurzbefehle App sogar einfacher konfigurieren (Tastaturkurzbefehl hinzufügen, als Schnellaktion und oder Programm speichern usw.).

- - - - - -

gibt es ein gutes Tutorial für sowas, idealerweise auf deutsch?
Englisch ist die Sprache der Wahl, wenn man mit Programmiersprachen bzw. Unix-Befehlen arbeiten möchte.
Für jeden Unix-Befehl gibt es zB. eine Hilfe-Seite im Terminal, welche die möglichen Optionen und die nötige Syntax kurz erklärt. Die ist natürlich auf -> englisch.
Und wenn man mit einer Sache nicht vorankommt, findet man mögliche Lösungen im Netz auch meist nur auf englisch, genau so wie wohl auch "gute" Tutorials.

- - - - -

Dein Skript ist wirklich krude 🤪
Umständlich bzw unnötig kompliziert aufgebaut und ohne einheitliche Syntax.

Und statt probieren kommt man mit einer gezielten Websuche (-> auf englisch) schneller weiter.
"unix and operator" oder in der Art.

Code:
if [[ $f == *"RLS"* && $f == *"intern"* ]]
Ließe sich auch kürzer schreiben, soll hier aber reichen.

Code:
mv $f $DEST/"$filename RLS intern $filedate"


Wo sollte ich fragen, wenn mir hier bei meinem Problem niemand weiterhelfen kann?

Allerdings würde es sozusagen an Spam grenzen, dort zB. nach einem logischen Operator wie "and" zu fragen, also Dinge, die man mit einer kurzen Websuche finden kann.

Gruß
 

quiddjes

Danziger Kant
Registriert
08.10.09
Beiträge
3.903
Dein Skript ist wirklich krude 🤪
Umständlich bzw unnötig kompliziert aufgebaut und ohne einheitliche Syntax.

Naja, ist mein erstes ;)
Was ist krude und unnötig? Was ist uneinheitlich an der Syntax?
 
Zuletzt bearbeitet:

sedna

Galloway Pepping
Registriert
22.10.08
Beiträge
1.359
Deine zwei If Bedingungen sind nicht korrekt ausformuliert bzw. verbunden.
Grübele 10 Minuten, starte gegebenenfalls eine Websuche auf englisch (sonst lernst du die Syntax nie)
Erst dann lese -falls noch nötig- den Spoiler
Entweder noch ein fi oder hier besser das zweite if durch elif ersetzen

Die zwei If Blöcke sind unnötig kompliziert. Es würde einer reichen:
wenn x enthält das und das, dann bewege x dorthin und benenne es soundso.

{},; "" wurden nach belieben gesetzt


Suchworte
  • unix else if
  • shell multiple if statements
  • unix conditional statements
  • oder ähnliche:
  • unix shell conditional statements

 

quiddjes

Danziger Kant
Registriert
08.10.09
Beiträge
3.903
Deine zwei If Bedingungen sind nicht korrekt ausformuliert bzw. verbunden.
(...)
Die zwei If Blöcke sind unnötig kompliziert. Es würde einer reichen:
wenn x enthält das und das, dann bewege x dorthin und benenne es soundso.

Das hat schon einen Sinn. Der erste IF wird noch durch ELIFs ergänzt und am Schluss frage ich: Wenn einer der IFs durchlaufen wurde, dann mach die Kopie (weil DEST dann gefüllt ist).

Den ersten IF habe ich jetzt so weit fertig, dass es funktioniert, beim ELIF (auch im ersten IF-Block) bastele ich gerade den Dateinamen mit Regular Expressions zusammen, das ist ne eigene Wissenschaft, in die ich gerade einsteige (im Dateinamen steht eine Zahl, die in den neuen Dateinamen mit einfließen soll).
 

sedna

Galloway Pepping
Registriert
22.10.08
Beiträge
1.359
Das hat schon einen Sinn. Der erste IF wird noch durch ELIFs ergänzt und am Schluss frage ich: Wenn einer der IFs durchlaufen wurde, dann mach die Kopie (weil DEST dann gefüllt ist).
Was das Skript machen soll, habe ich durchaus verstanden.
Viel Erfolg noch!