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

Warn User If any value is not Numeric in shell script

我正在学习bash。

我想做一个简单的脚本,如果用户输入值并形成该值的任何值或非数字值,而不是警告用户这个 value/s 不是数字,然后对它们进行排序,然后只打印计数数值

谢谢。 这是为了检查不是数值。

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

问题没有详细说明正在测试或可能需要验证的数字类型。 然而,您可以考虑 printf 对感兴趣的数字类型的评估类似于:

#!/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 ;

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