【问题标题】:Decimal for loop shell script循环 shell 脚本的十进制
【发布时间】:2013-06-13 13:57:32
【问题描述】:

如何在 bash shell 脚本中定义一个 for 循环,以获取 0.50 到 1.00 之间的十进制值(即 0.50 0.51 等) 我发现了这样的东西:

for I in $(seq 50 100)
do
    echo $I 10 | awk '{print $1/$2}'    

done

但它只是显示值,我需要将它分配给一个变量。我该怎么做?

【问题讨论】:

  • 你试过使用 bc 工具吗?给我 5 分钟,我会用它拍摄你的用例!
  • 根据您的代码,您将 50 - 100 除以 10,这应该给您 5-10,不是吗?

标签: bash shell for-loop decimal


【解决方案1】:

不需要外部命令:

for i in {50..100} ; do
    j=0.$i
    (( i==100 )) && j=1
    echo $j
done

【讨论】:

    【解决方案2】:
    for I in $(seq 50 100)
    do
        J=`echo $I 10 | awk '{print $1/$2}'`
        echo $J
    done
    

    【讨论】:

      【解决方案3】:

      好的,这就是我所做的

      i=$(echo "scale=2;0.50" | bc)
      
      echo $i
      
      for a in {50..100};do
      echo $i
      i=$(echo "scale=2;$i+0.01" | bc)
      done
      

      scale = 你想要的小数位数 ;(你想做的操作)你可以 / * + - ...

      我的脚本的输出是

      .50 .50 .51 .52 .53 .54 .55 .56 .57 .58 .59 .60 .61 .62 .63 .64 .65 .66 .67 .68 .69 ... 1.00

      【讨论】:

      • 51 个分支/管道到循环体中的 bc,UGH。
      【解决方案4】:
      序列--版本 seq (GNU coreutils) 8.4 ... 序列 0.5 .01 1.0 0.50 0.51 0.52 ... 1.00

      【讨论】:

        猜你喜欢
        • 2012-10-28
        • 1970-01-01
        • 2017-11-13
        • 2010-09-27
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-09-23
        • 1970-01-01
        相关资源
        最近更新 更多