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

发布于 2024-10-20 05:08:43 字数 376 浏览 2 评论 0原文

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

#!/usr/bin/tcsh

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

上面的代码片段显示了我正在尝试执行的操作,但不起作用。我已经尝试了许多基于使用 expr 命令或 @ 运算符的组合,但均无济于事。手册页和网络还没有发现任何内容。无论我尝试什么,我都会不断收到诸如“格式错误的数字”或“设置:变量名称必须以字母开头”之类的错误。

有没有类似 tcsh 的方法可以做到这一点?我当然可以使用 awk 或 water 来破解一些东西,但这似乎有点愚蠢。

How can I validate numeric input arguments to a tcsh script?

#!/usr/bin/tcsh

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

The above snippet shows what I'm trying to do but doesn't work. I have tried MANY combinations based on using the expr command or the @ operator to no avail. The man page and the web have turned up nothing yet. No matter what I try I keep getting errors like "Badly formed number" or "set: Variable name must begin with a letter".

Is there a tcsh-ish way of doing this? I could certainly hack something up using awk or watever but that seems kind of silly.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

酒解孤独 2024-10-27 05:08:43

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

Tcsh doesn't do floats. You can use bc or awk:

#!/usr/bin/tcsh
if ( `echo "$1 < 0.0" | bc` == 1 ) then
    echo "ERROR: first input argument is less than zero."
    exit 1
endif

or

#!/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
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文