在fish shell中,如何检查变量是否为数字?

在fish shell中,如何检查变量是否为数字?,shell,fish,Shell,Fish,如何检查变量是否是鱼壳中的数字? 正在寻找一种简单的方法。一种可能的解决方案是使用字符串匹配,如下所示: set num 123 if string match -qr '^[0-9]+$' $num; echo 'it is a number!'; end 如果num不是一个数字,则不进行任何回显 下面是fish shell文档中的字符串匹配摘要: 一种可能的解决方案是使用字符串匹配,如下所示: set num 123 if string match -qr '^[0-9]+$' $num;

如何检查变量是否是鱼壳中的数字?
正在寻找一种简单的方法。一种可能的解决方案是使用字符串匹配,如下所示:

set num 123
if string match -qr '^[0-9]+$' $num; echo 'it is a number!'; end
如果num不是一个数字,则不进行任何回显

下面是fish shell文档中的字符串匹配摘要:


一种可能的解决方案是使用字符串匹配,如下所示:

set num 123
if string match -qr '^[0-9]+$' $num; echo 'it is a number!'; end
如果num不是一个数字,则不进行任何回显

下面是fish shell文档中的字符串匹配摘要:


检查变量中是否有非数字:

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

检查变量中是否有非数字:

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

我认为fish从Tcl获得了一些灵感:string子命令非常类似:vs

Tcl中一个很好的子命令是string,您可以在这里说

if {[string is integer $num]} {
    puts "$num is an integer"
}
我已经破解了一个函数来公开fish中的string is[class][string]:


我认为fish从Tcl获得了一些灵感:string子命令非常类似:vs

Tcl中一个很好的子命令是string,您可以在这里说

if {[string is integer $num]} {
    puts "$num is an integer"
}
我已经破解了一个函数来公开fish中的string is[class][string]:

我的尝试:

数学0+$argv[2]2>/dev/null 如果测试$status-网元0 echo argv 2不是数字 其他的 echo argv是数字的 终止 我的尝试:

数学0+$argv[2]2>/dev/null 如果测试$status-网元0 echo argv 2不是数字 其他的 echo argv是数字的 终止
如果$var设置为:123asd,那么您的第一个建议似乎不起作用。您能在不起作用的地方提供一个字符串吗?设置var 1234;如果字符串匹配-qra'\d+'$var;echo$var是一个数字;结束-你想匹配浮点数吗?我已经编辑了我的评论,我的意思是类似123asd的东西。我重新阅读了文档,并且-所有这些都不是我想的。我知道你在告诉我,123asd作为一个数字错误地报告了积极性。我很抱歉。我的困惑是不起作用-这不是一个信息量很大的错误报告。如果$var设置为:123asd,您的第一个建议似乎不起作用。您能提供一个不起作用的字符串吗?设置var 1234;如果字符串匹配-qra'\d+'$var;echo$var是一个数字;结束-你想匹配浮点数吗?我已经编辑了我的评论,我的意思是类似123asd的东西。我重新阅读了文档,并且-所有这些都不是我想的。我知道你在告诉我,123asd作为一个数字错误地报告了积极性。我很抱歉,我的困惑是它不起作用——这不是一个信息量很大的错误报告。