簡體   English   中英

在 bash shell 腳本中檢查字符串是否僅包含數字的比較問題

[英]Problem with comparison for checking that a string contains only digits in a bash shell script

我不得不修改一個 bash shell 腳本,但我對 bash shell 腳本沒有太多經驗(我使用過許多其他語言,但對 shell 腳本編寫的不多)。

該腳本顯示一個帶有“X”項的菜單,然后提示用戶輸入一個數字。

用戶輸入數字后,我認為腳本會檢查輸入的數字/字符串以確保它是數字(我認為),然后檢查數字是否在某個值范圍內。

我想要更改的部分內容是菜單中的項目數,最初有 9 個項目,但我需要再添加 10 個左右。 如果輸入的數字超過 1 位,則檢查似乎失敗。

這是它進行檢查的片段:

while menu && read -rp "$prompt" num && [[ "$num" ]]; do
    if [[ "$num" == [[:digit:]] ]] && [[ $num -gt 0 ]] && [[ $num -le ${#service_accounts[@]} ]]; then

我認為失敗的“如果”部分是:

[[ "$num" == [[:digit:]] ]] 

如果 $num 中的字符串超過 1 位,有人能告訴我比較會失敗嗎?

而且,如果是這種情況,即使 $num 超過 1 位,我該如何更改該比較以使其正常工作?

對不起,如果這是一種奇怪的問題:(!!而且,提前致謝!

吉姆

[[ "$num" == [[:digit:]] ]]失敗,除了一位數之外的所有內容。


這使您的腳本能夠接受一到兩位數字:

[[ "$num" =~ ^[[:digit:]]{1,2}$ ]]

=~將 $num 與正則表達式^[[:digit:]]{1,2}$

請參閱:堆棧溢出正則表達式常見問題解答

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM