如何检查变量是否为数字? 寻找一种简单的方法。
答案 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中得到了一些启发:字符串子命令非常相似:fish与Tcl。
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