AIX Não suporta expressão booleana bc [duplicado]

0

Eu me deparei com um problema em que bc não tem expressões booleanas no sistema AIX. Quer saber se existe um comando de substituição, por isso não tenho mais o meu código? Isso está em um script bash.

Aqui está o que eu tinha:

percent=-0.17
max=0.20
if [[ $(bc <<< "$percent <= $max && $percent >= -$max") -ge 1 ]]; then
    echo "Under the $max acceptable buffer: File ACCEPTED" 
else
    echo "Over the $max acceptable buffer: File REJECTED"
    exit 1
fi

Esta é minha saída:

++ bc
syntax error on line 1 stdin
+ [[ '' -ge 1 ]]
    
por Tags 17.09.2018 / 20:28

1 resposta

3

A especificação POSIX de bc não requer condicionais simples, e% co_de do AIX % não os suporta. Você teria que sair do teste assim:

percent=-0.17
max=0.20
if [[ $(bc <<< "if ($percent <= $max) if ($percent >= -$max) 1") -eq 1 ]]; then
    echo "Under the $max acceptable buffer: File ACCEPTED" 
else
    echo "Over the $max acceptable buffer: File REJECTED"
    exit 1
fi

Reformatando o script bc , é assim:

if ($percent <= $max) 
  if ($percent >= -$max) 
    1

... somente se o valor $ percent estiver dentro de ambos intervalos, a expressão bc é executada, o que imprime 1 para stdout.

    
por 17.09.2018 / 21:37

Tags