如果shell脚本中的任何值不是数字,则警告用户
我正在学习bash 我想做一个简单的脚本,如果用户输入值并形成一个或多个非数值的值,则警告用户该值不是数值,然后对其进行排序,并只打印数值计数 谢谢。 这用于检查非数值如果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"
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等小数。