第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何測試變量是否為Bash中的數(shù)字?

如何測試變量是否為Bash中的數(shù)字?

慕碼人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

如果值不一定是整數(shù),請考慮適當?shù)匦薷膔egex;例如:

^[0-9]+([.][0-9]+)?$

.或者用符號來處理數(shù)字

^[+-]?[0-9]+([.][0-9]+)?$


查看完整回答
反對 回復 2019-07-11
?
鴻蒙傳說

TA貢獻1865條經(jīng)驗 獲得超7個贊

下面的解決方案也可以在基本的shell(如Bourne)中使用,而不需要正則表達式?;旧?,任何使用非數(shù)字的數(shù)值計算操作都會導致錯誤,而在shell中該錯誤將被隱式地視為false:

"$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

標準錯誤的重定向是為了隱藏bash輸出的“整數(shù)表達式預期”消息,以防我們沒有數(shù)字。

警告(感謝以下評論):

  • 帶小數(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")


查看完整回答
反對 回復 2019-07-11
  • 3 回答
  • 0 關(guān)注
  • 733 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學習伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號