Deixe o awk fazer isso:
df -P | awk 'NR == 2 { print $5+0; exit }'
Aqui está o que eu tentei fazer:
#!/bin/sh
res='df | awk 'FNR == 2 { print $5 }''
res2=$((res+0))
Aqui está o meu erro:
-bash: 53%: syntax error: operand expected (error token is "%")
Eu pesquisei 'string to int bash' que me mostrou $((res+0))
, mas não funciona devido ao %
na string ( 53%
). Como posso convertê-lo de tal forma que eu possa fazer uma declaração if como a abaixo (mas isso funciona)?
if [ "$res2" -ge 50 ]
then
echo "Your disk >=50% full!"
fi
Diga ao awk para suprimir o %
:
#!/bin/sh
res='df | awk 'FNR == 2 { sub("%","",$5); print $5 }''
res2=$((res+0))
Mas não vejo que a linha res2
faça alguma coisa. A menos que você tenha declare -i res2
, o bash ainda vai tratá-lo como uma string. Você pode fazer o seguinte bem:
if [ $res -ge 50 ]; then
echo "Your disk >= 50% full!"
fi
Uma pequena manipulação de variáveis também faria:
res='df | awk 'FNR == 2 { print $5 }''
limit=50
if (( ${res%\%} > limit )); then
echo "Your disk >= ${limit}% full"
fi
${res%\%}
removerá a última ocorrência de% de res
, (o primeiro% significa remover a última ocorrência e, em seguida, você precisa escapar \% para dizer que esse é o padrão a ser removido)