Shell 如何验证TCSH脚本中的数字输入参数?
如何验证tcsh脚本的数字输入参数Shell 如何验证TCSH脚本中的数字输入参数?,shell,tcsh,Shell,Tcsh,如何验证tcsh脚本的数字输入参数 #!/usr/bin/tcsh if ( $1 < 0.0 ) then echo "ERROR: first input argument is less than zero." exit 1 endif #/usr/bin/tcsh 如果($1
#!/usr/bin/tcsh
if ( $1 < 0.0 ) then
echo "ERROR: first input argument is less than zero."
exit 1
endif
#/usr/bin/tcsh
如果($1<0.0),则
echo“错误:第一个输入参数小于零。”
出口1
恩迪夫
上面的代码片段显示了我正在尝试做但不起作用的事情。我尝试了许多基于expr命令或@operator的组合,但都没有成功。手册页和网络还没有显示任何内容。不管我怎么做,我总是会遇到错误,比如“格式错误的数字”或“set:变量名必须以字母开头”
有什么办法可以做到这一点吗?我当然可以用awk或watever来破解一些东西,但这似乎有点傻。Tcsh不做浮动。您可以使用
bc
或awk
:
#!/usr/bin/tcsh
if ( `echo "$1 < 0.0" | bc` == 1 ) then
echo "ERROR: first input argument is less than zero."
exit 1
endif
#/usr/bin/tcsh
如果(`echo“$1<0.0”| bc`==1),则
echo“错误:第一个输入参数小于零。”
出口1
恩迪夫
或
#/usr/bin/tcsh
如果(`awk-v“val=$1”`开始{print val<0.0}`==1),那么
echo“错误:第一个输入参数小于零。”
出口1
恩迪夫
谢谢。这很有效。我发现了一些与你的awk系列相似的东西,但我真的希望有一种“更好”的方式。我开始怀疑tcsh不能处理浮动,你似乎已经证实了这一点。真倒霉我的相关行是“如果(echo$1 | awk”{打印$1@Dr.PersonPersonII:说到。我很好奇为什么你不喜欢Bash。顺便说一句,Bash也不做浮点运算。zsh和ksh93都做。我发现Bash语法非常不直观,很难记住。如果我一个月或更长时间都没有写Bash脚本,这是典型的,我必须用谷歌来找出syntax代表我想做的每一件事。另一方面,Csh更易于实际使用。我知道Csh的一些局限性,但我仍然觉得它更易于使用。@Dr.PersonPersonII:zsh的语法非常类似于Bash、ksh、Bourne shell等,因为它们都是相关的。然而,从那时起,你会发现zsh更具挑战性它不仅包括厨房的水槽,还有浴室的水槽,门卫的水槽,还有。。。
#!/usr/bin/tcsh
if ( `awk -v "val=$1" 'BEGIN {print val < 0.0}'` == 1 ) then
echo "ERROR: first input argument is less than zero."
exit 1
endif