慕碼人8056858
2019-07-11 13:25:01
如何測試變量是否為Bash中的數(shù)字?我只是不知道如何確保傳遞給我的腳本的參數(shù)是一個數(shù)字。我只想做這樣的事:test *isnumber* $1 && VAR=$1 || echo "need a number"有什么幫助嗎?
3 回答

炎炎設(shè)計
TA貢獻1808條經(jīng)驗 獲得超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條經(jīng)驗 獲得超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
警告
帶小數(shù)點的數(shù)字是 不
標識為有效“數(shù)字” 使用 [[ ]]
而不是 [ ]
將永遠評估到 true
大多數(shù)非Bash shell總是將此表達式計算為 true
Bash中的行為是無記錄的,因此可能在沒有警告的情況下發(fā)生變化。 如果值在數(shù)字(例如“1a”)后包含空格,則會產(chǎn)生錯誤,如 bash: [[: 1 a: syntax error in expression (error token is "a")
如果值與var-name相同(例如i=“i”),則會產(chǎn)生錯誤,如 bash: [[: i: expression recursion level exceeded (error token is "i")
添加回答
舉報
0/150
提交
取消