if [ $percentUsed > 75 ]
Você deve usar o operador -gt para comparações numéricas; o que você está fazendo é salvar a saída (vazia) do comando " [$ percentUsed] " em um arquivo chamado "75".
The script is executing properly, however, it is creating a zero byte file by the name 75. Any ideas why this is happening?
Não está sendo executado corretamente. O comando " [$ percentUsed] " retorna true se a string não estiver vazia, o que sempre é para este script, então sempre assume a primeira ramificação do se afirmação.
Como $ percentUsed não é um número inteiro (ele tem um '%' final) pode usar $ {percentUsed% [%]} para remover o '%' final da variável, ou adicione zero dentro do awk, como sugere o @val0x00ff.
Comentários gerais para scripts do bash:
- Favor [[<>> expr ]] ao invés de [<>> expr ], pois é mais poderoso e manipula melhor as strings vazias.
- Use aspas duplas em torno de strings, a menos que você tenha motivos para não fazê-lo, por exemplo: livrar-se de novas linhas.
- Adicione chaves: $ {var} em vez de $ var - muitas vezes pode eliminar a confusão ao ler e permite que as variáveis entrem no texto, como: echo "Restante: $ {kb} KB"
- Geralmente, evite criar arquivos temporários quando possível. Use pipes entre os estágios.
- Se você estiver usando uma ferramenta (como o awk ), aprenda a usar seu poder, ela tornará seu código mais conciso e facilitará a leitura do código dos outros.
- Recue seu código corretamente (o que talvez você tenha feito na realidade, mas não no post).
- Se você pretende digitar pontos de exclamação ("!"), use set + H para que eles não estraguem a sua interativa bash inserindo o histórico.
Aqui está uma versão funcional do seu script:
#!/bin/bash +H
df -k | awk '(FNR>1){print $1,$5+0}' | while read partition percentUsed
do
if [[ $percentUsed -gt 75 ]]
then
echo "Partition: ${partition} space is ${percentUsed}% used"
else
echo "Partition: ${partition}: OK!!"
fi
done
Nit pick: sua linha "echo" produziria "Partition / home space é 80" se fosse 80% usada, muitos leriam "space" como " free space", o que seria 20 %.