デバッグエラー:./vamsitest.sh:行10:[:`]'がありません

デバッグエラー:./vamsitest.sh:行10:[:`]'がありません

スクリプト: 次のエラーが発生します。デフォルトでは、メモリが一定の制限を超えた場合は電子メールを受け取る必要があります。

error : ./vamsitest.sh: line 10: [: missing `]'

 

#! /bin/bash

# Total memory space details

echo "Memory Space Details"
free -t -m | grep "Total" | awk '{ print "Total Memory space : "$2 " MB";
        print "Used Memory Space : "$3" MB";
        print "Free Memory : "$4" MB";
    }'
if [ "$3" MB" >10000 MB];
then
    email -s "memory utilization is high" [email protected]
fi

答え1

シェル変数$ 3が定義されていません。あなたはそれがawk変数$ 3であると仮定しているようです。そして、シェルテストでは誤った構文(引用符)を使用しています。

すべての操作をシェルで実行するか、awkで実行します。

とんでもない…

echo "Memory Space Details"
free -t -m | awk '
    /Total/ {
        print "Total Memory space : "$2 " MB"
        print "Used Memory Space : "$3" MB"
        print "Free Memory : "$4" MB"
        if ($3 > 10000)
            system ("email -s ...")
    }'

シェル(例:bash)で...

echo "Memory Space Details"
set $( free -t -m | grep "Total")
printf "Total Memory space : %s MB\n" "$2"
printf "Used Memory Space : %s MB\n" "$3"
printf "Free Memory : %s MB\n" "$4"
(( $3 > 10000 ))  &&  email -s "..."

関連情報