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

时间:2016-04-20 12:11:34

标签: shell git-bash

我正在学习bash。

我想做一个简单的脚本,如果用户输入值并形成值,任何值或数值都不是数字,而不是警告用户这个值不是数字而是排序它们只打印数值的计数< / p>

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

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

1 个答案:

答案 0 :(得分:0)

这个问题没有详细说明被测试的数字类型或者可能需要验证。 不过,您可以考虑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手册/帮助页面详细介绍了可以扩展到上述示例的所有可用类型。