Ich habe das folgende Shell-Skript:Awk Syntaxfehler mit Systemaufruf
#!/bin/bash
top -n 1 -p $(pgrep -d',' -f R) | grep R | awk '{if ($2 != "PID" && int($10) > 50)
{
kill_cmd = "echo kill " $1 " | bash -";
system(kill_cmd);
}}'
Wenn ich den Systemaufruf auf eine print-Anweisung die resultierende Ausgabe ändern sieht aus, als ich erwarten: echo kill <some_pid> | bash -
Ich bin auch in der Lage, die Ausgabe laufen von den Druckanweisungen ohne Fehler.
Der Systemaufruf Fehler aus besagt: Syntaxfehler in der Nähe von unerwartetem Token `(‘
Die Absicht des Skripts ist oben zu verwenden, bei laufender R Prozesse zu suchen und tötet sie, wenn sie mehr als 50% verwenden von der Systemspeicher.
Wenn die Debug-print-Anweisung die erwartete Ausgabe erzeugt, wie Sie es sagen, dann gibt es nichts in Ihrem Skript, das die Fehlermeldung produzieren würde, die Sie sagen Sie machen also irgendwo einen Fehler bei der Diagnose/Beschreibung des Problems. Fügen Sie "print" <"kill_cmd"> "' vor dem Aufruf von system() hinzu und führen Sie dann 'cat -v script; ./script' und kopiere/füge das Ergebnis in deine Frage ein, so dass wir genau den Befehl sehen können, den du ausführst und die Ausgabe und die Fehlermeldung, die er erzeugt. –