2012-11-28 30 views
1

此檢查參數是Bourne shell腳本的整數檢查參數非整

if [[ $3 =~ ^[0-9]+$ ]] && (( $3 >= 1)) 

如何檢查,如果參數不是一個整數(可以由整數和字母的)? 所以,我想這只是上面的補充,但我不知道如何改變它。 我在哪裏可以找到關於這些符號的意思?:信息 =〜^ + $ &

回答

2

您可以使用De Morgan's Law否定,如果條件檢查的過程如下:內

if [[ ! $3 =~ ^[0-9]+$ ]] || (( $3 < 1)) 
  • !符號[[...]]意味着否定。
  • $3 < 1$3 >= 1

否定的=~運營商允許在if語句中使用正則表達式。

這裏使用的&&的意思是「邏輯與」

符號^ + $的其餘爲Regular Expression,這是一個主題值得更多的閱讀比我能在這個答案提供,但在短:

  • ^:線
  • 的匹配開始
  • +:匹配一個或多個(在這種情況下它匹配一個或多個數字)
  • $:匹配行尾
  • 合起來,^[0-9]+$表示:只匹配除數字以外的任何字符串。