デフォルトでは、SSHを介して2つの異なるノードからメモリ使用量を取得し、2つの異なる変数に保存します。その後、メモリが少ないホストを選択し、戻りコードは0または1です。 arr 配列には 2 つのホスト名が含まれています。
function selectNode() {
arr=("$@")
mem1=$((ssh ${arr[0]} "free -m | awk 'NR==2{print \"%f\n\", \$3*100/\$2 }'")| bc -l)
mem2=$((ssh ${arr[1]} "free -m | awk 'NR==2{print \"%f\n\", \$3*100/\$2 }'")| bc -l)
if [ "${mem1}" > "${mem2}" ]; then
node=1
else
node=0
fi
return $node
}
上記のスクリプトは正常に実行され、0または1を返しますが、mem1行とmem2行で構文エラーが発生します。
(standard_in) 1: syntax error
ここで解決策は何ですか?
ベストアンサー1
計算を実行するために使用する必要はありませんbc
。
mem1=$(ssh ${arr[0]} "free -m | awk 'END{if(NR==2) print \$3*100/\$2 }'")
mem2=$(ssh ${arr[1]} "free -m | awk 'END{if(NR==2) print \$3*100/\$2 }'")