Страница 1 из 1

Вопрос по bash

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

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

#!/bin/bash
case $1 in
1)
echo "Первое"
;;
2)
echo "Второе"
;;
esac
К сожалению, значение параметра передается и обрабатывается, как строка, то есть 1.000000
К примеру, пишу а скрипт M00 получает строку 2.000000, сравнивает со всеми значениями и ничего не делает, потому как строка "2.000000" совсем не то, что "2"
Как заставить bash работать с числовыми значениями, а не со строками?

Re: Вопрос по bash

Добавлено: 24 окт 2013, 13:57
Serg
[ $a = $b ] - сравнение строк
[ $a -eq $b ] - сравнение чисел
подробности в "man test"

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

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

p=`echo $1 | sed -e 's/\.[0-9]*$//'`

Re: Вопрос по bash

Добавлено: 24 окт 2013, 15:40
Сергей Саныч
UAVpilot писал(а):Но bash работает только с целыми числами
это ключевое. Не знал.
Сделал так

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

#!/bin/bash
case ${1%.*} in
1)
echo "Первое"
;;
2)
echo "Второе"
;;
esac
Работает.