8
Sto provando ad eseguire il seguente codice con un indirizzo IP come parametro dalla riga di comando; però io sono sempre un errore che dice - ": linea 6: errore di sintassi nei pressi di token imprevisto` echo' "Errore di sintassi vicino a token imprevisto `echo '
.
#!/bin/sh
echo $1;
declare -a values=$(ssh -q [email protected]$1 "ps -eo pcpu,pid,user | sort -r -k1 | less | grep jboss");
for value in ${values[*]} do
echo $value;
done
favore potete aiutarmi a rettificare questo errore?
Si noti che manca una coppia di parentesi per l'assegnazione dell'array: 'declare -a values = ($ (ssh -q ...))'. Un'altra questione è se l'output del comando remoto viene analizzato o meno nell'insieme corretto di elementi dell'array. Inoltre, il 'less' nella tua pipeline non è necessario al meglio. – chepner
Per iterare in modo sicuro sugli elementi di una matrice, utilizzare '" $ {values [@]} "' - con le virgolette. Vedi http://stackoverflow.com/a/12316565/7552. Per creare l'array, è necessario racchiudere i valori tra parentesi: 'declare -a values = ($ (ssh ...))'. Quello che hai attualmente è un array con un elemento, e quell'elemento è una stringa con parole separate da spazi bianchi. –
Grazie mille :) – user2986175