Я пишу сценарий Bash. У меня есть переменная, которая является значением float. Например:Получить значение до десятичной точки
x=2099.2
мне нужно значение перед десятичной точкой, то есть, только 2099
.
Я пишу сценарий Bash. У меня есть переменная, которая является значением float. Например:Получить значение до десятичной точки
x=2099.2
мне нужно значение перед десятичной точкой, то есть, только 2099
.
Вы можете использовать следующее разложение параметров оболочки:
${x%%.*}
Это снимает все от первой точки.
Смотрите вживую:
$ v=203.4
$ echo ${v%%.*}
203
$ v=2.3.4
$ echo ${v%%.*}
2
От Bash Reference Manual → 3.5.3 Shell Parameter Expansion:
$ {параметр %% слово}
Слово раскрывается, чтобы получить шаблон так же, как в расширение имени файла , Если шаблон совпадает с конечной частью расширенного значения параметра, то результатом расширения является значение параметра с удаленным самым длинным совпадающим шаблоном. Если параметр равен '@' или '', операция удаления шаблона применяется поочередно к каждому позиционному параметру, и расширение является результирующим списком. Если параметр представляет собой переменную массива с индексом «@» или «», операция удаления шаблона применяется поочередно к каждому члену массива, и расширение является результирующим списком.
это может помочь вам, проверить принятый ответ http://stackoverflow.com/questions/8777070/linux-ksh-round-down-or-round-up-float-numbers –
Вы также можете используйте '$ {x %%. *}', чтобы удалить все из точки. – fedorqui
Что такое скрипт 'bsh'? Неясно, действительно ли вы имеете в виду 'ksh', как предлагают ваши теги, или' bash'. –