【问题标题】:How to validate numeric input arguments in TCSH script?如何验证 TCSH 脚本中的数字输入参数?
【发布时间】:2011-03-04 15:20:24
【问题描述】:

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

#!/usr/bin/tcsh

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

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

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

【问题讨论】:

    标签: shell tcsh


    【解决方案1】:

    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
    

    【讨论】:

    • 谢谢。这样可行。我发现了与您的 awk 行类似的东西,但我真的希望有一种“更好”的方式。我开始怀疑 tcsh 无法处理浮点数,而您似乎已经确认了这一点。真可惜。我的相关行是“如果(echo $1 | awk '{print $1&lt;0.0}' == 1)那么”。啊。我拒绝切换到只有施虐狂才会自愿使用的 bash。我需要硬着头皮去检查 zsh 或其他东西。
    • @Dr.PersonPersonII:说到sadomasochism。我很好奇你为什么不喜欢 Bash 的细节。顺便说一句,Bash 也不做浮点数。 zsh 和 ksh93 都可以。
    • 我发现 bash 语法非常不直观且难以记忆。如果我一个月或更长时间没有编写 bash 脚本,这是典型的,我必须谷歌找出我想做的每一件事的语法。另一方面,Csh 更容易实际使用。我知道 csh 的一些限制,但我仍然觉得使用起来更愉快。
    • @Dr.PersonPersonII:zsh 的语法与 Bash、ksh、Bourne shell 等非常相似,因为它们都是相关的。但是,您会发现 zsh 更具挑战性,因为它不仅包括厨房水槽,还包括浴室水槽、看门人水槽、...
    猜你喜欢
    • 1970-01-01
    • 2017-06-27
    • 2022-12-02
    • 2019-11-16
    • 2023-03-30
    • 1970-01-01
    • 1970-01-01
    • 2021-01-23
    • 1970-01-01
    相关资源
    最近更新 更多