デフォルトでは、メモリは変数です。スクリプトはサーバーにTelnetを接続し、freeコマンドを実行してメモリ使用量を確認し、awkを使用して使用率を取得しようとします。ただし、次の構文エラーが発生します。
memory=`ssh $line -n "free | grep Mem | awk '{ print $3/$2 *100.0 }'"`
echo -e "The memory usage is: $memory" >>$LOGFILE
エラーは次のとおりです。
awk: { print / *100.0 }
awk: ^ unterminated regexp
awk: cmd. line:1: { print / *100.0 }
awk: cmd. line:1: ^ unexpected newline or end of string
ベストアンサー1
問題は、コマンドが実行される前に$3
二重引用符で囲まれているため、シェルに置き換えられることです(割り当てられていない場合は何もありません)。$2
二重引用符内の一重引用符はこれを防ぎません。
$ echo "'$unassigned'"
''
あなたは脱出する必要があります$
:
memory=$(ssh $line -n "free | awk '/Mem/ { print \$3/\$2 *100.0 }'")
あるいは、free
サーバーとawk
クライアントで実行することもできます。
memory=$(ssh $line -n "free" | awk '/Mem/ { print $3/$2 *100.0 }')