这是我尝试做的:
#!/bin/sh
res=`df | awk 'FNR == 2 { print $5 }'`
res2=$((res+0))
这是我的错误:
-bash:53%:语法错误:预期操作数(错误标记为“%”)
我在 Google 上搜索了“string to int bash”,它向我展示了它,但由于字符串 ( ) 中的$((res+0))
原因,它不起作用。如何将其转换为可以执行如下 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
让 awk 来做:
df -P | awk 'NR == 2 { print $5+0; exit }'