Linux 如何在UNIX中检查变量是否为数字

Linux 如何在UNIX中检查变量是否为数字,linux,unix,Linux,Unix,我尝试在UNIX中检查变量是否为数字,如下所示: 当我执行程序时,它总是会阻塞else。当我检查在线测试工具时,正则表达式是正确的 set reqex = '^[0-9]*$' if( $parm =~ $reqex ) then echo " ** NUMBER PASSED [$JOBPARM] ** " else echo " ** NOT NUMBER PASSED [$JOBPARM] ** " endif 我不确定您使用

我尝试在UNIX中检查变量是否为数字,如下所示: 当我执行程序时,它总是会阻塞else。当我检查在线测试工具时,正则表达式是正确的

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

我不确定您使用的是哪种shell或脚本语言

如果您正在尝试为ksh或bash开发shell脚本,那么这应该可以:

 reqex="^[0-9]+$"
 if [ $parm  =~ $reqex ]; then 
     echo "     ** NUMBER PASSED [$JOBPARM] **     "
 else 
     echo "     ** NOT NUMBER PASSED [$JOBPARM] **     " 
 fi
我还对正则表达式做了一个简单的修改。我使用
+
来匹配至少一个数字,而不是匹配零个或多个数字



希望这有帮助

您使用的脚本语言是什么?您似乎使用了
csh
中的一些语法和
bash
中的一些语法。我将*更改为+并将$parm设置为123,但它会抛出“未传递数字”消息。我正在使用Kshell。提前感谢。您在哪里从
*
更改为
+
?在你的剧本里?