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 dieless
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 🙂
Du musst angemeldet sein, um einen Kommentar abzugeben.
Setzen Sie ein
;
vor dem tun, oder das tun, in einer neuen Zeile.Den
;
hinter "echo $Wert," ist nicht nötig, außer wenn Sie schreiben, dasdone
direkt dahinter.