Вопрос по bash

Обсуждение установки, настройки и использования LinuxCNC. Вопросы по Gкоду.
Аватара пользователя
Сергей Саныч
Мастер
Сообщения: 9116
Зарегистрирован: 30 май 2012, 14:20
Репутация: 2857
Откуда: Тюмень
Контактная информация:

Вопрос по bash

Сообщение Сергей Саныч »

Голову сломал: как передать числовой параметр в bash, чтобы он был воспринят именно как число? Нужно для реализации собственных M-команд.
Допустим, надо, чтобы команда M00 Pn (к примеру) выдавала на терминал "первое" или "второе" в зависимости от параметра P

Код: Выделить всё

#!/bin/bash
case $1 in
1)
echo "Первое"
;;
2)
echo "Второе"
;;
esac
К сожалению, значение параметра передается и обрабатывается, как строка, то есть 1.000000
К примеру, пишу а скрипт M00 получает строку 2.000000, сравнивает со всеми значениями и ничего не делает, потому как строка "2.000000" совсем не то, что "2"
Как заставить bash работать с числовыми значениями, а не со строками?
Чудес не бывает. Бывают фокусы.
Аватара пользователя
Serg
Мастер
Сообщения: 21923
Зарегистрирован: 17 апр 2012, 14:58
Репутация: 5181
Заслуга: c781c134843e0c1a3de9
Настоящее имя: Сергей
Откуда: Москва
Контактная информация:

Re: Вопрос по bash

Сообщение Serg »

[ $a = $b ] - сравнение строк
[ $a -eq $b ] - сравнение чисел
подробности в "man test"

Но bash работает только с целыми числами, посему придётся делать например так:

Код: Выделить всё

p=`echo $1 | sed -e 's/\.[0-9]*$//'`
Я не Христос, рыбу не раздаю, но могу научить, как сделать удочку...
Аватара пользователя
Сергей Саныч
Мастер
Сообщения: 9116
Зарегистрирован: 30 май 2012, 14:20
Репутация: 2857
Откуда: Тюмень
Контактная информация:

Re: Вопрос по bash

Сообщение Сергей Саныч »

UAVpilot писал(а):Но bash работает только с целыми числами
это ключевое. Не знал.
Сделал так

Код: Выделить всё

#!/bin/bash
case ${1%.*} in
1)
echo "Первое"
;;
2)
echo "Второе"
;;
esac
Работает.
Чудес не бывает. Бывают фокусы.
Ответить

Вернуться в «LinuxCNC»