Estou tentando escrever um comando que analisa o estado da bateria e suspende o laptop se a bateria estiver fraca. Eu tentei usar algo assim:
#!/bin/bash
if [ $(acpi -b | cut -c 25) < 11 ]
then notify-send "Hello"
fi
Isso funciona, mas por algum motivo, se eu substituir 11 por um número de um dígito como 5, recebo um erro
battery-notify-standby: line 2: 5: No such file or directory
Também tentei substituir o colchete por dois colchetes para designá-lo como uma expressão aritmética. Então eu recebo
battery-notify-standby: line 2: ((: < 11 : syntax error: operand expected (error token is "< 11 ")
Não tenho certeza do que exatamente está errado. Alguém pode me ajudar?
o
<
operador em shells é de redirecionamento, não de comparação. Parece que você tem um arquivo chamado11
, então ele parece ser lido e funciona. (mas não tem nada a ver com a verificação da saída – sempre verifique suas hipóteses!)O operador de comparação que você está procurando é
-lt
, não<
.Parece que seu comando
$(acpi -b | cut -c 25)
está errado. Quando você alterou[ ]
para(( ))
o erro é o mesmo que se o seu comando produzisse um espaço em branco