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

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

測試string是否為有效整數(shù)

測試string是否為有效整數(shù)

函數(shù)式編程 2019-09-02 08:40:13
我正在嘗試做一些常見的事情:在shell腳本中解析用戶輸入。如果用戶提供了有效的整數(shù),則腳本會執(zhí)行一項操作,如果無效,則執(zhí)行其他操作。麻煩的是,我還沒有找到一種簡單(而且相當(dāng)優(yōu)雅)的方式 - 我不想用char來區(qū)分char。我知道這一定很容易,但我不知道如何。我可以用十幾種語言來做,但不是BASH!在我的研究中,我發(fā)現(xiàn)了這個:正則表達式,用于測試字符串是否包含基數(shù)為10的有效實數(shù)其中有一個關(guān)于正則表達式的答案,但據(jù)我所知,這是C(以及其他)中可用的函數(shù)。盡管如此,它看起來像是一個很好的答案,所以我用grep嘗試了它,但是grep不知道該怎么做。我試過-P在我的盒子上意味著把它當(dāng)作PERL regexp - nada。Dash E(-E)也沒有用。并且-F都沒有。為了清楚起見,我正在嘗試這樣的東西,尋找任何輸出 - 從那里,我將破解腳本以利用我得到的任何東西。(IOW,我期待一個不合格的輸入在有效行重復(fù)時不返回任何內(nèi)容。)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的縮影。它應(yīng)該有這樣的旗幟if [ -I "string" ] ;then   echo "String is a valid integer."else   echo "String is not a valid integer."fi
查看完整描述

3 回答

?
尚方寶劍之說

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

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


case ${variable#[-+]} in

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

  * ) echo Valid number ;;

esac

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


查看完整回答
反對 回復(fù) 2019-09-02
  • 3 回答
  • 0 關(guān)注
  • 533 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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