Увеличить десятичное значение до следующего целого значения

Если доступен gpasswd(должен быть в большинстве дистрибутивов, кроме, например,Solaris) можно указать список пользователей, разделенных запятыми, за которым следует имя группы:

gpasswd -M userA,userB,userC mygroup
1
31.07.2019, 22:30
3 ответа

Через awkи прибавив 0.5к результату, .fсам округлит его до ближайшего числа.

awk -F\= 'BEGIN{printf("%.f\n", $2+0.5)}' 
2
27.01.2020, 23:14
if [[ '1' -eq "$(echo "$i > ${i%.*}" | bc)" ]]; then
    i=$((${i%.*}+1))
else
    i=${i%.*}
fi
0
27.01.2020, 23:14

Предположим, что bash.

Для обработки произвольного количества десятичных знаков нам нужна программа, допускающая произвольную точность, напримерbc:

$ round(){ bc <<< "a=$1"'; scale=0; b=a/1; if (a==b) a else b+1'; }
$ for i do round "$i"; done
1.0000
2
2
2

Или обработать как текст:

$ round(){ reg='^([0-9]*)\.0*[1-9]'; [[ $1 =~ $reg ]] && echo "$((${1%%.*}+1))" || echo "$1"; }
$ set 1.0000 1.6 1.00001 1.00049
$ for i do round "$i"; done
1.0000
2
2
2
0
27.01.2020, 23:14

Теги

Похожие вопросы