vin*_*vin 5 shell-script conversion bc floating-point variable
我会得到像 2743410360.320 这样的值,我想要像 2743410360 这样的值给一个变量。
我试过
INTValueOfGB=$ echo "($gb+0.5)/1" | bc
Run Code Online (Sandbox Code Playgroud)
但我越来越 (standard_in) 1: syntax error
$ p=2743410360.320
$ echo $p
2743410360.320
$ echo ${p%%.*}
2743410360
Run Code Online (Sandbox Code Playgroud)
我没有看到@vin 问题的答案,即:
但我越来越
(standard_in) 1: syntax error
该bc命令打印(standard_in) 1: syntax error是因为gb未设置shell 变量:
$ unset gb
$ echo "($gb+0.5)/1" | bc
(standard_in) 1: syntax error
$ gb=2743410360.320
$ echo "($gb+0.5)/1" | bc
2743410360
Run Code Online (Sandbox Code Playgroud)
在对@dchirikov 的回答的评论中,@vin 说printf "%.0f"“不起作用”:
$ unset gb
$ printf '%.0f\n' $gb
0
$ gb=2743410360.320
$ printf '%.0f\n' $gb
2743410360
Run Code Online (Sandbox Code Playgroud)
在@vin出现问题的两个区域,unset变量重现问题,设置变量解决问题。