Aktuelle Zeit: 05.07.2020 06:37

Alle Zeiten sind UTC + 1 Stunde [ Sommerzeit ]




Ein neues Thema erstellen Auf das Thema antworten  [ 5 Beiträge ] 
Autor Nachricht
 Betreff des Beitrags: Terminal vs. RunProgram()
BeitragVerfasst: 07.04.2020 13:18 
Offline

Registriert: 13.05.2010 09:26
Wohnort: Berlin
Hallo!

Ich möchte unter Linux mit PureBasic ein anderes Programm ausführen.
Das Problem: Obwohl der Programmaufruf im Terminal wie erwartet funktioniert, funktioniert er mit RunProgram() nicht.

Im Einzelnen (getestet unter Linux Mint 19.3 Cinnamon mit PB 5.70 x64):
Ich habe eine Datei "script.r" mit dem Inhalt
Zitat:
3 * 4
Ausführung dieser Befehlszeile
Code:
Rscript script.r
im Terminal zeigt [1] 12.
Auch die Umleitung in eine Datei funktioniert.
Code:
Rscript script.r > out.txt
schreibt [1] 12 in die Datei.

Wenn ich "Rscript" durch den kompletten Pfadnamen "/usr/bin/Rscript" ersetze, funktioniert alles genauso.

Im Gegensatz dazu mit PureBasic:
Code:
; Linux Mint 19.3 Cinnamon

SetCurrentDirectory("/home/nino/Schreibtisch/")
Debug GetCurrentDirectory()

; Debug RunProgram("Rscript", "./script.r > r_out.txt", "")         ; -> 1
Debug RunProgram("/usr/bin/Rscript", "/home/nino/Schreibtisch/script.r > r_out.txt", "")  ; -> 1

RunProgram() liefert in beiden Fällen 1 zurück, aber sonst sehe ich nichts. Eine Datei namens "r_out.txt" wird nicht erzeugt.

Wie kann ich es mit PureBasic anstellen, dass Rscript ein Skript ausführt und das Ergebnis in eine Datei schreibt?

_________________
Dieser Satz ist falsch.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Terminal vs. RunProgram()
BeitragVerfasst: 07.04.2020 16:51 
Offline
Ein Admin
Benutzeravatar

Registriert: 29.08.2004 20:20
Wohnort: Saarbrücken
Code:
Debug RunProgram("/usr/bin/Rscript", "/home/nino/Schreibtisch/script.r > r_out.txt", "")  ; -> 1

Das Schreiben in die Datei mittels ">"- Operator ist ein Befehl von Bash oder eben deiner normalen Shell. 'RunProgram()' kann tatsächlich nur Programme mit Parametern ausführen und Operatoren wie du sie aus Bash kennst, nicht interpretieren und ausführen. Umgehen könntest du das so:
Code:
RunProgram("/bin/bash", ~"-c \"Rscript /home/nino/Schreibtisch/script.r > r_out.txt\"", "")

Das verhält sich dann genau so wie wenn du es manuell im Terminal eingibst.

_________________
Ubuntu Gnome 20.04 LTS x64, PureBasic 5.72 x64 (außerdem 4.41, 4.50, 4.61, 5.00, 5.10, 5.11, 5.21, 5.22, 5.30, 5.31, 5.40, 5.50, 5.60, 5.71b2)
"Die deutsche Rechtschreibung ist Freeware, du darfst sie kostenlos nutzen – Aber sie ist nicht Open Source, d. h. du darfst sie nicht verändern oder in veränderter Form veröffentlichen."


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Terminal vs. RunProgram()
BeitragVerfasst: 07.04.2020 19:59 
Offline

Registriert: 13.05.2010 09:26
Wohnort: Berlin
Hallo NicTheQuick,

vielen Dank für Deine Antwort!

NicTheQuick hat geschrieben:
Code:
RunProgram("/bin/bash", ~"-c \"Rscript /home/nino/Schreibtisch/script.r > r_out.txt\"", "")
... funktioniert leider auch nicht. Vielleich hat mein Linux-System irgendwo 'ne Macke, aber ich habe keine Ahnung wo ich anfangen soll zu suchen.

_________________
Dieser Satz ist falsch.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Terminal vs. RunProgram()
BeitragVerfasst: 08.04.2020 10:10 
Offline
Ein Admin
Benutzeravatar

Registriert: 29.08.2004 20:20
Wohnort: Saarbrücken
Was ist, wenn du die Ausgabedatei r_out.txt auch absolut angibst oder den WorkingDirectory-Parameter von RunProgram an den Schreibtisch anpasst?
Code:
RunProgram("/bin/bash", ~"-c \"Rscript /home/nino/Schreibtisch/script.r > r_out.txt\"", "/home/nino/Schreibtisch")

Code:
RunProgram("/bin/bash", ~"-c \"Rscript /home/nino/Schreibtisch/script.r > /home/nino/Schreibtisch/r_out.txt\"", "")

_________________
Ubuntu Gnome 20.04 LTS x64, PureBasic 5.72 x64 (außerdem 4.41, 4.50, 4.61, 5.00, 5.10, 5.11, 5.21, 5.22, 5.30, 5.31, 5.40, 5.50, 5.60, 5.71b2)
"Die deutsche Rechtschreibung ist Freeware, du darfst sie kostenlos nutzen – Aber sie ist nicht Open Source, d. h. du darfst sie nicht verändern oder in veränderter Form veröffentlichen."


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Terminal vs. RunProgram()
BeitragVerfasst: 08.04.2020 12:30 
Offline

Registriert: 13.05.2010 09:26
Wohnort: Berlin
Das funktioniert :!:
Und meine Antwort von gestern war falsch, tatsächlich funktioniert der betr. Code auch. Ich hatte nur leider einen blöden Fehler gemacht. :oops:

Nochmal ganz herzlichen Dank für die Unterstützung! Ich hatte zuvor schon gefühlt "das halbe Internet" durchsucht, aber keine Lösung gefunden.

_________________
Dieser Satz ist falsch.


Nach oben
 Profil  
Mit Zitat antworten  
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen Auf das Thema antworten  [ 5 Beiträge ] 

Alle Zeiten sind UTC + 1 Stunde [ Sommerzeit ]


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 3 Gäste


Sie dürfen keine neuen Themen in diesem Forum erstellen.
Sie dürfen keine Antworten zu Themen in diesem Forum erstellen.
Sie dürfen Ihre Beiträge in diesem Forum nicht ändern.
Sie dürfen Ihre Beiträge in diesem Forum nicht löschen.

Suche nach:
Gehe zu:  

 


Powered by phpBB © 2008 phpBB Group | Deutsche Übersetzung durch phpBB.de
subSilver+ theme by Canver Software, sponsor Sanal Modifiye