Hallo Mac-User,
aus einer Java-Applikation möchte ich ein Shell-Script starten. Dazu habe ich mir ein Testprogramm geschrieben.
Das Script liegt an anderer Stelle im Dateibaum uns sieht so aus.
Hier nun mein Problem:
Das Java-Programm startet das Skript.
Der zurück gegebene Status ist 0.
Allerdings wird nur der Shellbefehl 'cd' ausgeführt.
Der Copy-Befehl 'cp -R' wird nicht ausgeführt.
Starte ich das Script im Terminal, dann wird der Copy-Befehl ausgeführt und die Fotos kopiert.
Woran kann das liegen? Ich bin mit meinem Latein am Ende.
Gruss GBunge
aus einer Java-Applikation möchte ich ein Shell-Script starten. Dazu habe ich mir ein Testprogramm geschrieben.
Java:
package skripttester;
import java.io.*;
public class SkriptTester {
public static void main(String[] args) {
// Pfad zum Skript
String path = System.getenv("HOME")+"/bin/applefotos.sh";
// Skript Ausführbarkeit testen
if( !new File(path).canExecute()){
System.out.println( path + " kann nicht ausgeführt werden!");
return;
}
// Processbuilder und Process Instanzen
ProcessBuilder procBld = new ProcessBuilder( path, "" );
Process proc = null;
// Process starten
try {
proc = procBld.start();
int status = proc.waitFor();
// Rückgabewert
System.out.println("Exit status: " + status );
}
catch (IOException | InterruptedException e) { e.printStackTrace(); }
System.out.println("Prgrammende!" );
}
}
Das Script liegt an anderer Stelle im Dateibaum uns sieht so aus.
Bash:
#Fotos der App 'Apple-Fotos' in den Ordner 'AppleFotos' kopieren
#!/bin/sh
pwd
cd /Users/gb/Pictures/"Photos Library.photoslibrary"/originals/
pwd
echo .
echo "das hat geklappt!"
echo .
cp -R * /Users/gb/AppleFotos
exit 0
Das Java-Programm startet das Skript.
Der zurück gegebene Status ist 0.
Allerdings wird nur der Shellbefehl 'cd' ausgeführt.
Der Copy-Befehl 'cp -R' wird nicht ausgeführt.
Starte ich das Script im Terminal, dann wird der Copy-Befehl ausgeführt und die Fotos kopiert.
Woran kann das liegen? Ich bin mit meinem Latein am Ende.
Gruss GBunge