AIX は bc ブール式をサポートしません。

AIX は bc ブール式をサポートしません。

AIXシステムでは、bcにブール式がないという問題が発生しました。もはやコードを書く必要がないように、別のコマンドがあるのだろうか?これはbashスクリプトにあります。

これが私が持っているものです:

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

これは私の結果です。

++ bc
syntax error on line 1 stdin
+ [[ '' -ge 1 ]]

ベストアンサー1

bcPOSIX仕様純粋な条件文は必要なく、AIXではbcこれをサポートしません。テストは次のように分類する必要があります。

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

bc次のようにスクリプトを再フォーマットします。

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

...$percent 値が範囲内にある場合のみ両方1範囲は式を実行し、1標準出力として印刷します。

おすすめ記事