2013-08-02 2 views
-1

Я пишу сценарий Bash. У меня есть переменная, которая является значением float. Например:Получить значение до десятичной точки

x=2099.2 

мне нужно значение перед десятичной точкой, то есть, только 2099.

+1

это может помочь вам, проверить принятый ответ http://stackoverflow.com/questions/8777070/linux-ksh-round-down-or-round-up-float-numbers –

+0

Вы также можете используйте '$ {x %%. *}', чтобы удалить все из точки. – fedorqui

+0

Что такое скрипт 'bsh'? Неясно, действительно ли вы имеете в виду 'ksh', как предлагают ваши теги, или' bash'. –

ответ

1

Вы можете использовать следующее разложение параметров оболочки:

${x%%.*} 

Это снимает все от первой точки.

Смотрите вживую:

$ v=203.4 
$ echo ${v%%.*} 
203 

$ v=2.3.4 
$ echo ${v%%.*} 
2 

От Bash Reference Manual → 3.5.3 Shell Parameter Expansion:

$ {параметр %% слово}

Слово раскрывается, чтобы получить шаблон так же, как в расширение имени файла , Если шаблон совпадает с конечной частью расширенного значения параметра, то результатом расширения является значение параметра с удаленным самым длинным совпадающим шаблоном. Если параметр равен '@' или '', операция удаления шаблона применяется поочередно к каждому позиционному параметру, и расширение является результирующим списком. Если параметр представляет собой переменную массива с индексом «@» или «», операция удаления шаблона применяется поочередно к каждому члену массива, и расширение является результирующим списком.