私が試したことは次のとおりです。
#!/bin/sh
res=`df | awk 'FNR == 2 { print $5 }'`
res2=$((res+0))
これは私のせいです:
-bash:53%:構文エラー:オペランドが必要です(「%」と表示されたエラー)。
Googleで「string to int bash」を検索しましたが、表示されましたが、$((res+0))
string()の理由で機能しませんでした。これを次の(まだ有効な)ifステートメントを実行できるように変換するにはどうすればよいですか?%
53%
if [ "$res2" -ge 50 ]
then
echo "Your disk >=50% full!"
fi
答え1
awkに抑制するように指示します%
。
#!/bin/sh
res=`df | awk 'FNR == 2 { sub("%","",$5); print $5 }'`
res2=$((res+0))
しかし、この行が何もしないことがわかりますres2
。がなければ、declare -i res2
bashはそれを文字列として扱います。次のことができます。
if [ $res -ge 50 ]; then
echo "Your disk >= 50% full!"
fi
答え2
いくつかの変数操作も可能です。
res=`df | awk 'FNR == 2 { print $5 }'`
limit=50
if (( ${res%\%} > limit )); then
echo "Your disk >= ${limit}% full"
fi
${res%\%}
最後の%エントリを削除しますres
。 (最初の%は最後の項目を削除することを意味し、削除するパターンであることを示すには\ %をエスケープする必要があります。)
答え3
ちょうどやってみましょう:
df -P | awk 'NR == 2 { print $5+0; exit }'