Я выполняю XCode для разработки Mac на 20-дюймовой iMac текущего генерала, и это работает отлично с большим количеством другого выполнения процессов. Можно определенно использовать iMac для разработки программного обеспечения.
По какой-то причине мне нравится это решение:
if ! echo "$x $y -p" | dc | grep > /dev/null ^-; then echo "$x > $y" else echo "$x < $y" fi
Вам нужно убедиться, что $ x и $ y действительны (например, содержат только числа и ноль или один '.') и, в зависимости от возраста вашего постоянного тока вам может потребоваться укажите что-то вроде "10k", чтобы получить распознавать нецелые значения.
Вот некоторые проблемы, с которыми я столкнулся:
Bash не понимает числа с плавающей запятой. Он понимает только целые числа.
Вы можете либо перейти на более мощный язык сценариев (Perl, Python, Ruby ...), либо выполнить всю математику через bc
или аналогичный.
используйте awk
x="0.80"
y="0.70"
result=$(awk -vx=$x -vy=$y 'BEGIN{ print x>=y?1:0}')
if [ "$result" -eq 1 ];then
echo "x more than y"
fi
Если ваши значения гарантированно находятся в той же форме и диапазоне, вы можете выполнить сравнение строк:
if [[ $x > 0.70 ]]
then
echo "It's true"
fi
Это не удастся, если x
равно ".8" ( без ведущего нуля), например.
Однако, хотя Bash не понимает десятичные дроби, его встроенная функция printf
может их форматировать. Так что вы можете использовать это для нормализации ваших значений.
$ x=.8
$ x=$(printf %.2 $x)
$ echo $x
0.80
Язык bash лучше всего охарактеризовать как полнофункциональный макропроцессор, в котором нет разницы между числами и строками. Проблема в том, что test (1) работает с целыми числами.