1

この正規表現パターンをcaseステートメントで機能させて、スクリプトに渡すことができる特定のタイプのIDに一致させようとしています。このメッセージIDを他のメッセージIDと区別するために、英数字の正確な数をダッシュ​​と一致させる必要があります。これは、このbashスクリプトに渡される可能性があります。

メッセージID形式の例:c7c3e910-c9d2-71e1-0999-0aec446b0000

#!/bin/bash
until [ -z "$1" ]
 do
    case "$1" in
    "")
        echo "No value passed"
        ;;
    [a-z0-9]\{8\}-[a-z0-9]\{4\}-[a-z0-9]\{4\}-[a-z0-9]\{4\}-[a-z0-9]\{12\})
        echo "Found message ID: $1"
        ;;
    *)
        echo "Server $1"
        ;;
    esac
    shift 
done
4

1 に答える 1

4

UUIDは16進数で構成されます。

ケースステートメントは、正規表現ではなくグロブスタイルのパターンを受け入れます(角括弧内の文字範囲は問題ありませんが、中括弧内の量指定子は機能しません)。

Bash正規表現マッチングを使用して文字列をテストできます。

pattern='[[:xdigit:]]{8}-[[:xdigit:]]{4}-[[:xdigit:]]{4}-[[:xdigit:]]{4}-[[:xdigit:]]{12}'
if [[ $1 =~ $pattern ]]
then
    echo "found"
fi
于 2012-07-09T15:12:26.793 に答える