我正在嘗試做一些常見的事情:在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
測試string是否為有效整數(shù)
函數(shù)式編程
2019-09-02 08:40:13