如何测试变量是否为Bash中的数字?我只是不知道如何确保传递给我的脚本的参数是一个数字。我只想做这样的事:test *isnumber* $1 && VAR=$1 || echo "need a number"有什么帮助吗?
3 回答
炎炎设计
TA贡献1808条经验 获得超4个赞
re='^[0-9]+$'if ! [[ $yournumber =~ $re ]] ; then echo "error: Not a number" >&2; exit 1fi
^[0-9]+([.][0-9]+)?$
^[+-]?[0-9]+([.][0-9]+)?$
鸿蒙传说
TA贡献1865条经验 获得超7个赞
"$var" -eq "$var"
#!/bin/bashvar=aif [ -n "$var" ] && [ "$var" -eq "$var" ] 2>/dev/null; then echo numberelse echo not a numberfi
[ -n "$var" ] && [ "$var" -eq "$var" ] 2>/dev/nullif [ $? -ne 0 ]; then echo $var is not numberfi
警告
带小数点的数字是 不
标识为有效“数字” 使用 [[ ]]
而不是 [ ]
将永远评估到 true
大多数非Bash shell总是将此表达式计算为 true
Bash中的行为是无记录的,因此可能在没有警告的情况下发生变化。 如果值在数字(例如“1a”)后包含空格,则会产生错误,如 bash: [[: 1 a: syntax error in expression (error token is "a")
如果值与var-name相同(例如i=“i”),则会产生错误,如 bash: [[: i: expression recursion level exceeded (error token is "i")
添加回答
举报
0/150
提交
取消