我试图在 bash 中创建一个天花板函数,它将需要一个数字并向上舍入作为天花板函数。
例如:如果 shard_div 是 3.2 rounded_up 将是 4。
rounded_up=`ec $shard_div | awk '{printf("%d\n",$0+=$0<0?0:0.9)}'`
发生问题的地方是一些 shard_div 变量是数字,如 0.5 ^-10 或 0.00001。当这种情况发生时,rounded_up 为 0。
我宁愿不使用 if 语句,并且运行的机器没有 Perl。
使用bc
。它有点健壮,但可以工作。
rounded_up=$(ec "scale=0; v=$shard_div; v=6; if (v%1 != 0) v = (v + 1); v / 1" | bc)
需要/ 1
,否则 bc 不缩放。需要处理v%1 == 0
情况,否则整数也会放大(如v=5; 5+1
-& gt;6)
在 AWK:
$ awk '{print int($1) + ( $1!=int($1) && $1>=0 )}'
一些测试:
$ ec 0 | awk '{print int($1)+($1!=int($1)&&$1>=0)}'
0
$ ec 0.1 | awk '{print int($1)+($1!=int($1)&&$1>=0)}'
1
$ ec 1 | awk '{print int($1)+($1!=int($1)&&$1>=0)}'
1
$ ec -1 | awk '{print int($1)+($1!=int($1)&&$1>=0)}'
-1
$ ec -1.1 | awk '{print int($1)+($1!=int($1)&&$1>=0)}'
-1
本站系公益性非盈利分享网址,本文来自用户投稿,不代表边看边学立场,如若转载,请注明出处
评论列表(1条)