![AIX 不支持 bc 布尔表达式](https://linux22.com/image/11070/AIX%20%E4%B8%8D%E6%94%AF%E6%8C%81%20bc%20%E5%B8%83%E5%B0%94%E8%A1%A8%E8%BE%BE%E5%BC%8F%20.png)
我遇到了一个问题,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 值在范围内时两个都1
Ranges执行表达式,并打印1
到标准输出。