O [[
do Bash não suporta -a
. Uma abordagem é usar [
e manter as coisas do mesmo jeito:
[ $SYNCS -gt "8" -a $SYNCS_BEHIND -eq "0" ]
Para melhores resultados com [
, deve-se citar duas variáveis:
[ "$SYNCS" -gt 8 -a "$SYNCS_BEHIND" -eq 0 ]
No caso geral, -a
e -o
devem ser evitados como o comando [
não pode analisar seus argumentos de forma confiável quando recebe mais de 4 (além de [
e ]
) . Então
[ "$SYNCS" -gt 8 ] && [ "$SYNCS_BEHIND" -eq 0 ]
Como alternativa , mantenha o [[
, mas use &&
para -a
:
[[ $SYNCS -gt "8" && $SYNCS_BEHIND -eq "0" ]]
Muitas pessoas preferem [[
over [
porque as aspas duplas em torno das variáveis são desnecessárias.
Mas aqui, se você for usar a sintaxe específica de ksh / bash / zsh, para comparação aritmética, é melhor escrevê-la:
(( SYNCS > 8 && SYNCS_BEHIND == 0 ))
MORE: As linhas grep
têm dois problemas. Como apontou Hauke, há um cólon supérfluo em um. Segundo, para usar a sintaxe [0-9]+
, ambas as linhas precisam da opção -E
para regex estendida:
SYNCS=$(echo "$DATA" | grep -oE 'syncs: [0-9]+' | awk '{print $2}')
SYNCS_BEHIND=$(echo "$DATA" | grep -oE 'syncs_behind: [0-9]+' | awk '{print $2}')