Syntaxfehler in der Nähe unerwartetes token `echo'

Ich versuche, führen Sie den folgenden code, der mit einer IP-Adresse als parameter auf der Kommandozeile ausgeführt werden; jedoch erhalte ich eine Fehlermeldung - ": Zeile 6: Syntaxfehler in der Nähe unerwartetes token `echo'
"

.

#!/bin/sh
echo $1;
declare -a values=$(ssh -q  jboss@$1 "ps -eo pcpu,pid,user | sort -r -k1 | less | grep jboss");
for value in ${values[*]} do
   echo $value;
done

Bitte können Sie mir helfen beheben diese Fehler?

  • Beachten Sie, dass Sie fehlen ein paar Klammern für die array-Zuordnung: declare -a values=( $(ssh -q ... ) ). Ob oder nicht die Ausgabe der remote-Befehl analysiert ist, in den korrekten Satz von array-Elementen, ist eine andere Frage. Auch die less in Ihre pipeline unnötig ist am besten.
  • Um sicher zu iterieren über die Elemente eines Arrays mit "${values[@]}" -- mit Anführungszeichen. Siehe stackoverflow.com/a/12316565/7552. Auf das array erstellen, müssen Sie wickeln Sie die Werte in Runden Klammern: declare -a values=( $(ssh ...) ). Was Sie derzeit haben, ist ein array mit einem element, und das element ist ein string mit Worten, die durch Leerzeichen getrennt werden.
  • Ich danke Ihnen sehr 🙂
InformationsquelleAutor user2986175 | 2013-12-18
Schreibe einen Kommentar