亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

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

測試string是否為有效整數

測試string是否為有效整數

函數式編程 2019-09-02 08:40:13
我正在嘗試做一些常見的事情:在shell腳本中解析用戶輸入。如果用戶提供了有效的整數,則腳本會執行一項操作,如果無效,則執行其他操作。麻煩的是,我還沒有找到一種簡單(而且相當優雅)的方式 - 我不想用char來區分char。我知道這一定很容易,但我不知道如何。我可以用十幾種語言來做,但不是BASH!在我的研究中,我發現了這個:正則表達式,用于測試字符串是否包含基數為10的有效實數其中有一個關于正則表達式的答案,但據我所知,這是C(以及其他)中可用的函數。盡管如此,它看起來像是一個很好的答案,所以我用grep嘗試了它,但是grep不知道該怎么做。我試過-P在我的盒子上意味著把它當作PERL regexp - nada。Dash E(-E)也沒有用。并且-F都沒有。為了清楚起見,我正在嘗試這樣的東西,尋找任何輸出 - 從那里,我將破解腳本以利用我得到的任何東西。(IOW,我期待一個不合格的輸入在有效行重復時不返回任何內容。)snafu=$(echo "$2" | grep -E "/^[-+]?(?:\.[0-9]+|(?:0|[1-9][0-9]*)(?:\.[0-9]*)?)$/")if [ -z "$snafu" ] ;then   echo "Not an integer - nothing back from the grep"else   echo "Integer."fi有人請說明這是最容易做到的嗎?坦率地說,在我看來,這是TEST的縮影。它應該有這樣的旗幟if [ -I "string" ] ;then   echo "String is a valid integer."else   echo "String is not a valid integer."fi
查看完整描述

3 回答

?
尚方寶劍之說

TA貢獻1788條經驗 獲得超4個贊

這里的聚會遲到了。我非常驚訝,沒有一個答案提到最簡單,最快,最便攜的解決方案; 該case聲明。


case ${variable#[-+]} in

  *[!0-9]* | '') echo Not a number ;;

  * ) echo Valid number ;;

esac

在比較之前修剪任何符號感覺有點像黑客,但這使得case語句的表達式變得更加簡單。


查看完整回答
反對 回復 2019-09-02
  • 3 回答
  • 0 關注
  • 539 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號