Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/shell/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如果shell脚本中的任何值不是数字,则警告用户_Shell_Git Bash - Fatal编程技术网

如果shell脚本中的任何值不是数字,则警告用户

如果shell脚本中的任何值不是数字,则警告用户,shell,git-bash,Shell,Git Bash,我正在学习bash 我想做一个简单的脚本,如果用户输入值并形成一个或多个非数值的值,则警告用户该值不是数值,然后对其进行排序,并只打印数值计数 谢谢。 这用于检查非数值 for((i=0;i<count;i++)) do if ! [ "${ARRAY[i]}" -eq "${ARRAY[i]}" ] 2> /dev/null then echo "${ARRAY[i]} is not numeric"

我正在学习bash

我想做一个简单的脚本,如果用户输入值并形成一个或多个非数值的值,则警告用户该值不是数值,然后对其进行排序,并只打印数值计数

谢谢。 这用于检查非数值

for((i=0;i<count;i++))
    do
        if ! [ "${ARRAY[i]}" -eq "${ARRAY[i]}" ] 2> /dev/null
            then
                echo "${ARRAY[i]} is not numeric"   
        fi
    done
((i=0;i/dev/null)的

然后
回显“${ARRAY[i]}不是数字”
fi
完成

该问题没有详细说明正在测试或可能需要验证的数值类型。 不过,您可以考虑类似于

的数值类型的<代码> Prtff<代码>评价。
#!/bin/bash
ARRAY=( 1.1 A 99 'string' '102' ) ; # Mixed array type
for item in ${ARRAY[@]} ; do
    NaN=0 ;
    if ! printf %d "$item" 2>/dev/null ; then NaN=$((++NaN)) ; else printf "%d is decimal\n" "$item" ; continue ; fi ;
    if ! printf %f "$item" 2>/dev/null ; then NaN=$((++NaN)) ; else printf "%f is float\n" "$item" ; continue ; fi ;
    if ! printf %i "$item" 2>/dev/null ; then NaN=$((++NaN)) ; else printf "%i is integer\n" "$item" ; continue ; fi ;
    if  ((NaN != 0)) ; then echo "$item NOT-A-NUMBER" ; fi ;
done ;

手册/帮助页详细介绍了可以扩展到上述示例的所有可用类型。

下面是脚本的返回:
11.1000001.100000是浮点00.0000000A非数字9999是十进制00.0000000string非数字102102是十进制
。除了这很难看之外,您还忽略了
%d
中的一点e> printfin仅适用于整数,不适用于1.1等小数。