bashでawsのInstanceIDを表現する正規表現を考えています。
■やりたいこと
AWSのInstanceIDのパターンに合致しないか検査したい。
bashシェルに渡される引数は1つのみ。
引数の中に含まれるInstanceIDは1つ以上。
・2つ以上の場合はInstanceIDの間にカンマ(,)を入れて連結する。
InstanceIDは”i-”から始まり、0から9、aからz(小文字限定)の繰り返しで構成される。
■できたこと。
InstanceIDに合致するパターンの正規表現はできた。
^i-[0-9a-z]+(,i-[0-9a-z]+)*$
■できてないこと
例えば、i-d8ediD1dやy-91kdicq1(ここのInstanceIDは例です)といったInstanceIDを引数で受け取った場合、
どう正規表現で判定するか教えていただきたいです。
■この質問の理由
正しいInstanceIDのパターン、デリミタ(カンマ)による連結で引数を受け取った場合、4行目にあるように”:”だけの行があり、できればこういう書き方をしたくないと思い質問させていただいた次第です。
理想はelseを使わずにif-fiのみで、通常のパターンとは違うInstanceIDの検査をしたいです。
bash
1#!/bin/bash 2 3if [[ ${arg_InstanceID} =~ ^i-[0-9a-z]+(\,i-[0-9a-z]+)*$ ]]; then 4 : 5else 6 # Force stopped 7 exit 8fi
回答1件
あなたの回答
tips
プレビュー