bash 字符串转int

bash 字符串转int

这是我尝试做的:

#!/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 }'

相关内容