我正在学习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
答案 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
手册/帮助页面详细介绍了可以扩展到上述示例的所有可用类型。