【发布时间】:2017-08-19 14:57:48
【问题描述】:
我正在编写一个简单的 bash 脚本来计算公式 C=1-(p^n) 中所需的最小值 p。 C和p是用户输入的浮点数。
例如,如果 C=0.36 和 p=0.8,那么我的程序应该为 n 的值返回 2,因为 1-(0.8^2)=0.36
我的代码如下。请注意:我在我的 while 循环条件语句中将|bc 放在了许多不同的位置,并且每次出现错误时。如您所见,我尝试的最后一个位置是在两个右括号之间。
我收到以下错误:
预期的操作数(错误标记是“.36”)
#!/bash/bin
echo "Enter I/O fraction time:"
read ioINPUT
echo "Enter expect CPU utilization:"
read uINPUT
n=1
function cpuUTIL {
x='scale=3; 1-$ioINPUT**$n'|bc
}
while [[ cpuUTIL -lt $uINPUT ]|bc]; do
n+=1
x='scale=3; 1-$ioINPUT**$n'|bc
done
echo $c
如何在 bash 脚本 while 循环条件语句中正确使用 bc?
【问题讨论】:
-
代码的一些问题:1.
/bash/binspoonerism。 2. 变量名应该是c、p和n,而不是$ioINPUT、$uINPUT和$x . 3. 最后一行是echo $c,但从未分配过$c。 4. 测试仅整数-lt与十进制值的比较。 5.函数cpuUTIL不能用-lt测试。 6. 变量赋值不产生输出,因此将它们传递到bc没有任何效果。 7.]|bc]错字。 8.while测试不会受到该循环中的内容的影响,并且如果启动必须永远运行。 -
感谢您的提示。 1 和 3 发生是因为我赶时间并且很累。我道歉。唯一我不明白的问题是 2:为什么我的变量要命名为 c、p 和 n?
-
因为它是一个简单的程序,并且被建模的公式使用这些变量,所以程序更容易效仿。如果代码必须有长名称,那么最好使用这些等式字母建模的任何属性的名称。
标签: bash shell while-loop conditional-statements bc