8
我想執行下面的代碼與IP地址作爲參數從命令行;但是我收到一個錯誤說 - 「:行6:語法錯誤附近意外的標記'回聲」 」語法錯誤附近意外的標記`回聲'
.
#!/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
請你能幫助我糾正這個錯誤?
請注意,您缺少數組賦值的一對括號:'declare -a values =($(ssh -q ...))'。是否將遠程命令的輸出解析爲正確的數組元素是另一個問題。另外,你的管道中的「少」是不必要的。 – chepner
爲了安全地遍歷數組的元素,使用'「$ {values [@]}」' - 引號。請參閱http://stackoverflow.com/a/12316565/7552。要創建數組,需要將值包裝在圓括號中:'declare -a values =($(ssh ...))'。你目前擁有的是一個包含一個元素的數組,而該元素是一個由空格分隔的單詞。 –
非常感謝:) – user2986175