warum funktioniert xterm nicht mit meinem script?

393
phong

mein Skript: echo 123456 > /folder/folder/123.txt

Ich habe das Skript mit xterm ausgeführt: xterm -e my.sh &

Es funktioniert nicht

0
Was ist die Ausgabe / Fehler // was passiert? mstruebing vor 8 Jahren 0
eigentlich ist nichts passiert oder wurde berichtet. Es hat einfach nicht funktioniert. phong vor 8 Jahren 0

2 Antworten auf die Frage

1
Argonauts

Es gibt ein Hauptproblem und möglicherweise ein geringfügiges Problem mit Ihrem Xterm-Anruf. Erstens - Sie möchten nicht, dass das Skript mit dem & im Hintergrund steht. Es ist sehr wahrscheinlich genau das, was Sie gefragt haben, und wird im Hintergrund ausgeführt (praktisch unsichtbar). Sie können es mit ps oder Jobs in der Shell sehen, die Sie gestartet haben von; ps -A von überall usw.).

Ich lese aus Ihrer Situation, dass Sie versuchen, eine neue Xterm-Instanz zu erzeugen, und dieses Skript darin ausführen soll. und es tut das nicht im Hintergrund (zumindest sichtbar).

Zweitens sollten Sie den vollständigen Pfad zu my_script.sh angeben, den vollständigen Pfad verwenden und das Argument vollständig in Anführungszeichen setzen, z. B. "/home/you/my_script.sh".

Das verursacht Ihnen hier vielleicht kein Problem; Ich bin nicht positiv. Wenn Sie in der Zukunft ähnliche Skripts schreiben, werden Sie zu einem bestimmten Zeitpunkt zu einem Problem, da Sie ohne Anführungszeichen Opfer einer unbeabsichtigten Bash-Erweiterung werden könnten.

Letzter Hinweis - Wenn Sie ein Bash-Skript von einer Bash-Shell aus aufrufen, ist das #! / Bin / bash eigentlich völlig unnötig. Es ist eine gute Angewohnheit und macht es tragbarer - jemand anderes springt darauf und sagt '#! / Usr / bin / env bash is MORE portable', und ja, das ist es. Sie brauchen aber auch nicht, damit es funktioniert, vorausgesetzt, Sie rufen das Skript von bash auf (aber Sie sollten es sowieso immer haben).

Vielen Dank. Durch die Angabe des vollständigen Pfads des Skripts funktioniert es. phong vor 8 Jahren 0
0
torchhound

Stellen Sie sicher, dass Ihr Skript mit einem Shebang im Formular beginnt:

#!/bin/bash #(or #!/bin/sh for POSIX compliance) 

Stellen Sie als Nächstes sicher, dass Sie Ihr Skript ausführbar gemacht haben, indem Sie Folgendes ausführen:

$ chmod +x my_script.sh 

Versuchen Sie schließlich, Ihr Skript auszuführen:

$ ./my_script.sh 

Denken Sie daran, dass xterm ein grafischer Terminal-Emulator und nicht Bash selbst ist.

Ich habe das alles gemacht, das Skript funktioniert in bash, aber nicht mit xterm. phong vor 8 Jahren 0
Sie haben alle diese Schritte in xterm ausprobiert und nichts ist passiert? Hast du einen Fehler bekommen? torchhound vor 8 Jahren 0
Natürlich lief es fehlerfrei in xterm, aber beim Starten von der bash-Shell schlug es fehl. phong vor 8 Jahren 0