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

範例程式

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

作者: Tsung

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

發表迴響

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