Você pode usar printf para arredondamento:
$ printf "%.0f" 2743410360.320
Vou obter valor como 2743410360.320 e quero um valor como 2743410360 para uma variável.
Eu tentei
INTValueOfGB=$ echo "($gb+0.5)/1" | bc
Mas estou recebendo (standard_in) 1: syntax error
Você pode usar printf para arredondamento:
$ printf "%.0f" 2743410360.320
$ p=2743410360.320
$ echo $p
2743410360.320
$ echo ${p%%.*}
2743410360
Eu não vejo uma resposta para o problema do @ vin, que é:
But I am getting
(standard_in) 1: syntax error
O comando bc imprime (standard_in) 1: syntax error porque a variável gb da shell não está definida:
$ unset gb
$ echo "($gb+0.5)/1" | bc
(standard_in) 1: syntax error
$ gb=2743410360.320
$ echo "($gb+0.5)/1" | bc
2743410360
Nos comentários à resposta do @ dchirikov, @vin diz que printf "%.0f" não está funcionando:
$ unset gb
$ printf '%.0f\n' $gb
0
$ gb=2743410360.320
$ printf '%.0f\n' $gb
2743410360
Em ambas as áreas onde @vin tem problemas, a variável unset reproduz o problema, e a configuração da variável resolve o problema.
Seu comando precisa de alguns ( ) :
INTValueOfGB=$( echo "($gb+0.5)/1" | bc )
Mas isso não arredondará o número, para que isso funcione, você precisa definir a escala como 0:
INTValueOfGB=$( echo "scale=0;($gb+0.5)/1" | bc )
Isso arredondará (de x.5) para o próximo inteiro.
Para "arredondar para o próximo número inteiro" (Regra do banqueiro), é necessário usar o arredondamento de impressão:
LC_NUMERIC=C printf "%.0f" 2743410360.320
O LC_NUMERIC serve para garantir que os números sejam processados com um ponto como decimal.
Não é isso que os usuários na Alemanha gostariam de usar, isso deve funcionar com decimais com , :
$ LC_NUMERIC=de_DE.utf8 printf "%.0f" 2743410360,320
2743410360