ubuntuusers.de

Wieder einmal crontab, diesmal Pfade mit Leerzeichen

Status: Gelöst | Ubuntu-Version: Server 8.04 (Hardy Heron)
Antworten |

Dalai

Avatar von Dalai

Anmeldungsdatum:
16. Juni 2008

Beiträge: 2316

Wohnort: Meiningen

Hey,

nach das Problem mit den Prozentzeichen in der crontab vor knapp 3 Jahren gelöst wurde, habe ich nun eine ähnliche Frage: wie funktioniert das, wenn ich Leerzeichen in einem Pfad eines Kommandos habe?

Konkretes Beispiel aus der /etc/crontab:

52 */6    * * *   Nutzer    LOG=/home/Nutzer/pdf.log /media/daten/scripts/pdf_remove-empty_turn.sh "/home/Nutzer/Eigene Dateien/scan/2do"

Ich habe beim letzten Parameter alle möglichen Kombinationen durchprobiert:

  • mit doppelten AFZ (Anführungszeichen),

  • mit einfachen AFZ,

  • mit einfachem Backslash zum Escapen,

  • mit doppeltem Backslash zum Escapen,

  • mit einfachem Backslash und doppelten AFZ usw.

Das Skript startet zwar, aber es findet den zu verarbeitenden/übergebenen Pfad nicht. Cron schreibt deshalb eine Mail (was er ja im Prinzip auch soll).

MfG Dalai

Dalai

(Themenstarter)
Avatar von Dalai

Anmeldungsdatum:
16. Juni 2008

Beiträge: 2316

Wohnort: Meiningen

Sorry, falscher Alarm. Mein Skript war nicht leerzeichenfest 😳:

1
2
3
4
for file in ${1%/}/*.pdf
do
..
done

kann eben nicht mit Pfaden mit Leerzeichen umgehen.

Die Lösung ist also simpel: a) Skript so umbauen:

1
2
3
4
for file in "${1%/}"/*.pdf
do
..
done

und b) doppelte AFZ in der crontab reichen aus:

52 */6    * * *   Nutzer    LOG=/home/Nutzer/pdf.log /media/daten/scripts/pdf_remove-empty_turn.sh "/home/Nutzer/Eigene Dateien/scan/2do"

Nun rennt alles, wie es soll.

MfG Dalai

user_unknown

Avatar von user_unknown

Anmeldungsdatum:
10. August 2005

Beiträge: 17623

Wohnort: Berlin

Was schreibt er denn so?

Oh - knapp zu spät.

Antworten |