2011-03-04 60 views
1

如何验证tcsh脚本的数字输入参数?如何验证TCSH脚本中的数字输入参数?

#!/usr/bin/tcsh 

if ($1 < 0.0) then 
    echo "ERROR: first input argument is less than zero." 
    exit 1 
endif 

上面的代码片段显示了我正在尝试做的事情,但不起作用。我尝试了很多基于使用expr命令或@操作符的组合。手册页和网页还没有出现。无论我尝试什么,我都会收到错误信息,例如“格式不正确”或“设置:变量名称必须以字母开头”。

是否有tcsh-ish方式做到这一点?我当然可以用awk或watever来破解一些东西,但这看起来很愚蠢。

回答

2

Tcsh不会漂浮。您可以使用bcawk

#!/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 
if (`awk -v "val=$1" 'BEGIN {print val < 0.0}'` == 1) then 
    echo "ERROR: first input argument is less than zero." 
    exit 1 
endif 
+0

谢谢。这样可行。我发现了类似于你的awk系列的东西,但我真的希望有一个“更好”的方式。我开始怀疑tcsh不能处理花车,你似乎已经证实了这一点。游民。我的相关行是“if('echo $ 1 | awk'{print $ 1 <0.0}'== 1)然后”。啊。我拒绝切换到只有施虐受虐者愿意使用的bash。我需要咬紧牙关,检查zsh或其他东西。 – 2011-03-04 16:26:59

+0

@ Dr.PersonPersonII:说到[sadomasochism](http://www.faqs.org/faqs/unix-faq/shell/csh-whynot/“Csh编程被认为是有害的”)。我很好奇你为什么不喜欢Bash的细节。顺便说一句,Bash也不会漂浮。 zsh和ksh93都可以。 – 2011-03-04 16:36:00

+0

我发现bash语法非常不直观,难以记忆。如果我没有写一个典型的bash脚本而去一个月或更长时间,我必须让Google找出我想要做的每件事的语法。另一方面,Csh实际使用起来要容易得多。我知道csh的一些限制,但我仍然觉得使用起来更愉快。 – 2011-03-04 19:26:05