![デバッグエラー:./vamsitest.sh:行10:[:`]'がありません](https://linux33.com/image/61712/%E3%83%87%E3%83%90%E3%83%83%E3%82%B0%E3%82%A8%E3%83%A9%E3%83%BC%EF%BC%9A.%2Fvamsitest.sh%EF%BC%9A%E8%A1%8C10%EF%BC%9A%5B%EF%BC%9A%60%5D'%E3%81%8C%E3%81%82%E3%82%8A%E3%81%BE%E3%81%9B%E3%82%93.png)
スクリプト: 次のエラーが発生します。デフォルトでは、メモリが一定の制限を超えた場合は電子メールを受け取る必要があります。
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 "..."