Shell Script entschuldigte sich beim Befehl als fehlgeschlagen

438
Liuwei.Shi

Wenn ich einen Linux-Befehl "at" ausführen, finde ich, dass das ausgeführte Shellskript des Benutzers fehlschlägt. Beispielsweise schreibe ich den folgenden Code in mein Skript

 #!/bin/csh #or #!/bin/bash echo "Now will excute a shell script" dir=`pwd` my_path=`/home/Jim` 

Wenn ich das Skript in der Befehlszeile ausführen, funktioniert es einwandfrei.

Während ich das mit dem "at" -Befehl starte, wird die folgende Meldung angezeigt

Jetzt wird ein Shell-Skript erstellt. Dir = / home / Jim / Desktop: Befehl nicht gefunden mein_Pfad = "/ home / Jim": Befehl nicht gefunden

Ich habe viele Male ausprobiert, kann aber jetzt noch arbeiten

Also bitte, jeder kann mir helfen, dieses Problem zu beheben. Danke & Grüße!

0
wie benutzt du das? Archemar vor 8 Jahren 1
bash und csh sind "! =", hat Ihr Skript wirklich beides? Ist es ein bash-Skript oder ein csh-Skript? (Sind einfache Anführungszeichen und Backticks in bash & csh gleich?) Xen2050 vor 8 Jahren 0
Ich meine, wenn Sie #! / Bin / csh oder #! / Bin / bash verwenden, werden sowohl die Fehlerinformationen angezeigt. Liuwei.Shi vor 8 Jahren 0

1 Antwort auf die Frage

1
Zoredache

When you using backticks at the shell or in a script it attempts to execute the contents as if it was a program.

This line is trying to execute the program named /home/Jim, but I believe from what I can get out of your question, this is your home directory, not an executable program. So what you almost certainly need to do is put the /home/Jim in quotes, not backticks (`).

my_path=`/home/Jim` 
Sein Fehler zeigt, dass `/ home / Jim` in Anführungszeichen gesetzt ist und es scheint, als sei das, was` at` ist, es führt `dir = / home / Jim / Desktop` und` my_path = "/ home / Jim" als Befehle Tom Yan vor 8 Jahren 0
Schau dir seinen Fehler genauer an. Es ist ** Befehl nicht gefunden **. Beim Versuch, eine Zeichenfolge in einer Variablen zu speichern, wird kein ** Befehl gefunden ** angezeigt. Leider war die Formatierungsfrage des OPs durcheinander geraten, daher kann ich das nicht mit hundertprozentiger Sicherheit sagen, aber es scheint mir sehr wahrscheinlich, dass er Backticks anstelle von Anführungszeichen hat. Zoredache vor 8 Jahren 0
Du hast mich misverstanden. Ich meine, das "at" behandelte die ganzen Zeilen als Befehle, als wären "dir = / home / Jim / Desktop" und "my_path =" / home / Jim "` Programme. Tom Yan vor 8 Jahren 0
Oh, [at] (http://manpages.debian.org/cgi-bin/man.cgi?query=at&apropos=0&sektion=0&manpath=Debian+8+jessie&format=html&locale=de) ist ein Tool, mit dem Sie Ihr Programm ausführen können Befehl zu einem späteren Zeitpunkt. Die meisten Leute verwenden stattdessen cron, aber bei vielen Distributionen ist at immer noch standardmäßig installiert. Ich ging davon aus, dass das OP so etwas wie "echo" scriptpath "| um `aber vielleicht nicht. Zoredache vor 8 Jahren 0