2013-08-26 4 views
0

Этот код предназначен для проверки того, является ли символ целым числом или нет (я думаю). Я пытаюсь понять, что это значит, я имею в виду ... каждую часть этой строки, проверяя страницы руководства GREP, но это очень сложно для меня. Я нашел его в Интернете. Если кто-нибудь может объяснить мне часть Grep ... что означает, что каждая вещь положить туда:Shell script linux, validating integer

echo $character | grep -Eq '^(\+|-)?[0-9]+$'

Благодарности людей !!!

ответ

3

Анализ это регулярное выражение:

'^(\+|-)?[0-9]+$' 

^ - Line Start 
(\+|-)? - Optional + or - sign at start 
[0-9]+ - One or more digits 
$ - Line End 

В целом это соответствует строкам, как +123 или -98765 или просто 9

Здесь -E для расширенной поддержки регулярных выражений и -q для тихой в команде Grep.

PS: кстати вам не нужно grep для этой проверки и могут сделать это непосредственно в чистом Баше:

re='^(\+|-)?[0-9]+$' 
[[ "$character" =~ $re ]] && echo "its an integer" 
+0

Спасибо, человек ... Я пытаюсь понять все это в linux, я очень новичок в этом. Я буду продолжать пытаться –

+0

Добро пожаловать, рад, что это сработало для вас. – anubhava

+1

Здесь я нашел это для всех, кто в этом нуждается: http://tldp.org/LDP/abs/html/x17046.html –

0

Мне нравится эта шпаргалка для регулярных выражений:
http://www.cheatography.com/davechild/cheat-sheets/regular-expressions/

It очень полезно, вы можете легко проанализировать

'^ (+ | -)? [0-9] + $'

в

  • ^: линия должна начинаться с ...
  • (): группировка
  • \: ESC символ (потому + что-то значит ... смотри ниже)
  • + | -: плюс или минус знаки
  • : 0 или 1 repetation
  • [0-9]: диапазон чисел от 0-9
  • +: одного или более repetation
  • $: конец строки (не более символов не допускаются)

так он принимает как: -312353243 или +1243 или 5678
, но не принимают: 3 456 или 6.789 или 56 $ (как знак доллара) ,

Смежные вопросы