Преобразовать в число - PullRequest
2 голосов
/ 11 мая 2011

Как мне преобразовать строку в число?Следующий скрипт Bash не работает должным образом.

#!/bin/sh

mynum="0.02"

if [[ $mynum -lt 1 ]];then
    echo "low"
else
    echo "high"
fi

Сообщение об ошибке

stack.sh: строка 5: [[: 0,02: синтаксическая ошибка: неверный арифметический оператор (токен ошибки ".02")

Ответы [ 3 ]

3 голосов
/ 11 мая 2011

Проблема в том, что bash обычно поддерживает только целочисленную арифметику;вам нужно будет сдвинуть плавающую или сложную математику до dc или bc.

. Возможно, вы сможете обмануть в этом случае:

case $mynum in
0 | 0.* | .* | -*)
    echo low
    ;;
*)
    echo high
    ;;
esac

Но, как правило, это не такприменимо.

2 голосов
/ 11 мая 2011

Следующее сработало для меня. Это просто идея, как вы можете использовать bc . Измените код по своему желанию.

mynum="1.02"

d=\`echo "$mynum-1" | bc\`
if [ "${d:0:1}" = "-" ]
then
    echo "low"
else
    echo "high"
fi
0 голосов
/ 11 мая 2011

Вы можете использовать "<" ">" вместо -lt или -gt. Например:

a=0.09;[[ $a < 1 ]] && echo low ||echo big     
low
a=1.01;[[ $a < 1 ]] && echo low ||echo big    
big
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...