2017-02-16 16 views
0

Я пытаюсь проверить, является ли переменная номером или нет в UNIX, как показано ниже: , когда я запускаю программу, она всегда будет блокировать else. Регулярное выражение верно, поскольку я проверенный инструмент онлайн-тестированияКак проверить переменную номер или нет в UNIX

set reqex = '^[0-9]*$' 
    if( $parm =~ $reqex) then 
    echo "  ** NUMBER PASSED [$JOBPARM] **  " 
    else 
    echo "  ** NOT NUMBER PASSED [$JOBPARM] **  " 
    endif 
+1

Какой язык сценариев вы используете? Кажется, вы используете некоторый синтаксис из 'csh' и некоторого синтаксиса из' bash'. – Barmar

ответ

0

Я не уверен, какой язык или язык сценариев вы используете.

Если вы пытаетесь разработать скрипт для KSH или Баша, это должно работать:

reqex="^[0-9]+$" 
if [ $parm =~ $reqex ]; then 
    echo "  ** NUMBER PASSED [$JOBPARM] **  " 
else 
    echo "  ** NOT NUMBER PASSED [$JOBPARM] **  " 
fi 

Я также сделал зажженные изменения в регулярное выражение. Вместо *, соответствующих нулю или более цифрам, я использую + для сопоставления хотя бы одной цифры.


Надеюсь, это поможет!

+0

Я изменил * на + и установил $ parm в 123, но он бросает сообщение «не номер прошло». Я использую Kshell. Заранее спасибо. – ryan

+0

Где вы изменялись: от '*' до '+'? В вашем скрипте? – anacron