AIX 不支持 bc 布尔表达式

AIX 不支持 bc 布尔表达式

我遇到了一个问题,bc 在 AIX 系统中没有布尔表达式。想知道是否有替换命令,这样我就不必再编写代码了?这是在 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

bc的 POSIX 规范不需要纯粹的条件,并且 AIXbc不支持它们。你必须像这样分解测试:

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 值在范围内时两个都1Ranges执行表达式,并打印1到标准输出。

相关内容