2016-07-25 4 views
1
私はスクリプトに供給される最初の引数は、JavaScriptの正規表現で、私は

チェックbashスクリプトのパターンに対して、引数、および中の文字を置き換えること

^[a-zA-Z0-9]+\.[a-zA-Z]{2,}$ 
として表現しますグロブパターンに一致するかどうかを確認するbashスクリプトを書く必要が

つまり、1つ以上のアルファベット/数字で始まり、その後に1つのピリオド、2つ以上のアルファベットが続き、終了します。他のすべてはテストに失敗するはずです。

次に、引数のピリオドをアンダースコアに置き換える必要があります。

引数が空の場合はこれまでのところ、私は確認することができます。

case $1 in 
    '') echo "No argument supplied" >&2; exit 1 ;; 
esac 

を私はパターンテストは、そのcase文で''確認後否定して貼り付ける必要があります理解が、私はどのように見当もつかないそれを構築する。任意の直接のヘルプやオンラインリソースは大いに感謝されるでしょう。

また、有効な引数を変更して、その中の単一のピリオドをアンダースコアに置き換えることができます。

答えて

2

同じ正規表現もBASHで動作します。このスニペットを検討してください:

re='^[a-zA-Z0-9]+\.[a-zA-Z]{2,}$' 
s='abc123.xy' 

[[ $s =~ $re ]] && echo "${s/./_}" 
abc123_xy 
+1

それを鑑賞してください。 case文を削除して、それを 'if [[$ 1 =〜$ re]];に置き換えることができました。 then replaced = "$ {1 /./_}" else "引数が空または無効です" && exit 1 fi' – Sidd

関連する問題