为什么bash脚本中的bc不能打印小于1.0的值?

时间:2016-12-06 11:53:20

标签: bash bc

修改

正如chepner在下面的评论中提到的,我天真地误解了bc编程,实际上可以用

查看创建的目录
ls -a

这个问题在其他地方解决了(链接如下),但我认为我已经包含了我自己的问题来帮助解决背景背景下的问题。人们也可以跳到下面的问题。

背景

我有以下内容:

#!/bin/bash


##############################################################################

odir=$PWD

for (( i=0; i<=5; i++ )) ;
do

R=$(echo "scale=2;0.8+(0.1*$i)" |bc -l)

R1=$(echo "scale=2;0.5*($R)" |bc -l)

mkdir -p $odir/$R/rhf/
cd $odir/$R/rhf/

cp $odir/x.inp $odir/run

done

我的输出创建了目录:

1.0 1.1 1.2 1.3

目录不是0.8和0.9。因此我的问题涉及变量R:

    R=$(echo "scale=2;0.8+(0.1*$i)" |bc -l)

带有&#34;领先零的目录&#34; (0.8和0.9)没有打印。

解决方案

This problem was solved in another question here.

特别是对于那些对解决方案感兴趣的人,改编自potong链接中的第二个回复,是:

 R=$(echo "scale=2;x=0.1 + 0.1; if(x<1) print 0; x" | bc

问题

我想知道为什么bc无法打印前导零的任何特殊原因。这是一个错误,还是来自更基本的东西?作为编程中的一个小说,这个错误是否常见,以及我将来可能再次遇到的事情?

谢谢。

0 个答案:

没有答案