Bash 使用 Regex 判斷 輸入格式 是否正確

Bash 寫 Shell Script 遇到想要輸入值,然後此值要「判斷格式」是否輸入正確,要怎麼做呢?

Bash 使用 Regex 判斷 輸入格式 是否正確

  1. $ input="4.1.0-33"
  2. $ re='^[0-9]+.[0-9]+.[0-9]+-[0-9]+$' # 註:Bash \d 沒有作用,所以還是 [0-9] 寫一寫
  3. $ [[ $input =~ $re ]]
  4. $ echo $? # 格式正確會是 0,錯誤是 1
    • 0
  5. $ input="4.1.x-33"
  6. $ [[ $input =~ $re ]]
  7. $ echo $?
    • 1

範例程式

  1. #!/bin/bash
  2. echo -n "Enter code: "
  3. read -r input
  4. re='^[0-9]+\.[0-9]+\.[0-9]+-[0-9]+
  5. if ! [[ $input =~ $re ]]; then
  6. echo "輸入錯誤"
  7. else
  8. echo "輸入正確"
  9. fi

作者: Tsung

對新奇的事物都很有興趣, 喜歡簡單的東西, 過簡單的生活.

發表迴響

這個網站採用 Akismet 服務減少垃圾留言。進一步了解 Akismet 如何處理網站訪客的留言資料