在鱼壳中如何检查变量是否为数字?

时间:2018-10-13 23:12:16

标签: shell fish

如何检查变量是否为数字? 寻找一种简单的方法。

4 个答案:

答案 0 :(得分:1)

一种可能的解决方案是如下使用string match

set num 123
if string match -qr '^[0-9]+$' $num; echo 'it is a number!'; end

如果num不是数字,则不会回显任何内容。

这是鱼壳文档(https://fishshell.com/docs/current/commands.html#string)的string match简介:

string match [(-a | --all)] [((-e | --entire)] [(-i | --ignore-case)] [(-r | --regex)]
         [(-n | --index)] [(-q | --quiet)] [(-v | --invert)] PATTERN [STRING...]

答案 1 :(得分:1)

检查变量中是否存在非数字:

if not string match --quiet --regex '\D' $var; ...
# or
if string match --quiet --regex --invert '\D' $var; ...

答案 2 :(得分:0)

我认为fish从Tcl中得到了一些启发:字符串子命令非常相似:fishTcl

Tcl的一个不错的子命令是tableView,您可以在其中说

string is

我破解了一个函数以在鱼中暴露if {[string is integer $num]} { puts "$num is an integer" }

string is [class] [string]

答案 3 :(得分:0)

我的尝试

math "0+$argv[2]" 2>/dev/null
if test $status -ne 0
    echo "argv 2 is not numeric"
else
    echo "argv was numeric"
end