Das liegt daran, dass der Aufruf des Skripts jeweils von anderen Arbeitsverzeichnissen aus geschieht. Rufst du das Skript manuell mit
./philips.sh
auf, dann ist das Arbeitsverzeichnis, sofern du den absoluten Pfad in der Crontab richtig angegeben hast:
/home/vmfr/philips
Der Cronjob wird zwar unter Voranstellung des absoluten Pfades, jedoch immer aus dem Arbeitsverzeichnis
/home/$USER
aufgerufen. Dabei ist $USER der Benutzer, mit dem du die Crontab bearbeitet hast, in deinem Fall vermutlich vmfr. Da du im Skript selbst keine absoluten Pfade angegeben hast, werden Verzeichnisse und Dateien beim Cronjob an anderer Stelle erzeugt, als bei manuellem Aufruf. Was ich auch nicht verstehe: warum hast du die Underscores hier
sicherung=Sicherungen\_Philips\_mdm
auskommentiert? Das hast du hier
done < <(find . -name "*.mdm" -exec cp '{}' Sicherungen_Philips_mdm/ \; )
ja auch nicht getan, und ist auch nicht notwendig. Also: ich gehe mal davon aus, dass das Verzeichnis Sicherungen_Philips_mdm unterhalb von /home/vmfr/philips angelegt werden soll, und dass sich auch die Dateien Simple_XML_HLSeven_Converter.py und HL7_Generator.py in diesem Verzeichnis befinden. Dann würde ich vorschlagen, das Skript wie folgt abzuändern:
#!/bin/bash
echo 'philipstestausgabe'
standort=/home/vmfr/philips
sicherung=Sicherungen_Philips_mdm
mkdir -p $standort/$sicherung
array=()
while IFS= read -r -d $'\0'; do
array+=("$REPLY")
done < <(find $standort -name "*.mdm" -exec cp '{}' $standort/Sicherungen_Philips_mdm/ \; )
for var in "${array[@]}"
do
python3 $standort/Simple_XML_HLSeven_Converter.py $var $standort/$sicherung
python3 $standort/HL7_Generator.py $var $standort/$sicherung
done
Dann sollte es bei manuellem Aufruf und beim Aufruf per Cron gleichermaßen funktionieren.